gson string转json_string转换成jsonobject

gson string转json_string转换成jsonobjectCan’tseemtofigurethisout.似乎无法弄清楚。I’mattemptingJSONtreemanipulationinGSON,butIhavea

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文翻译自:Gson: Directly convert String to JsonObject (no POJO)

Can’t seem to figure this out. 似乎无法弄清楚。 I’m attempting JSON tree manipulation in GSON, but I have a case where I do not know or have a POJO to convert a string into, prior to converting to JsonObject . 我正在尝试在GSON中进行JSON树操作,但是在转换为JsonObject之前,我不知道或没有POJO将字符串转换成这种情况。 Is there a way to go directly from a String to JsonObject ? 有没有一种方法可以直接从String转到JsonObject

I’ve tried the following (Scala syntax): 我已经尝试了以下(Scala语法):

val gson = (new GsonBuilder).create

val a: JsonObject = gson.toJsonTree("""{ "a": "A", "b": true }""").getAsJsonObject
val b: JsonObject = gson.fromJson("""{ "a": "A", "b": true }""", classOf[JsonObject])

but a fails, the JSON is escaped and parsed as a JsonString only, and b returns an empty JsonObject . 但是a失败,仅将JSON逸出并解析为JsonStringb返回一个空的JsonObject

Any ideas? 有任何想法吗?


#1楼

参考:https://stackoom.com/question/hfn2/Gson-直接将String转换为JsonObject-无POJO


#2楼

String jsonStr = "{\"a\": \"A\"}";

Gson gson = new Gson();
JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
JsonObject jsonObj = element.getAsJsonObject();

#3楼

Came across a scenario with remote sorting of data store in EXTJS 4.X where the string is sent to the server as a JSON array (of only 1 object). 遇到了一种在EXTJS 4.X中对数据存储进行远程排序的情况,其中该字符串作为JSON数组(只有1个对象)发送到服务器。
Similar approach to what is presented previously for a simple string, just need conversion to JsonArray first prior to JsonObject. 与之前针对简单字符串提供的方法类似,只需要在JsonObject之前先转换为JsonArray。

String from client: [{“property”:”COLUMN_NAME”,”direction”:”ASC”}] 来自客户的字符串: [{“ property”:“ COLUMN_NAME”,“ direction”:“ ASC”}]

String jsonIn = "[{\"property\":\"COLUMN_NAME\",\"direction\":\"ASC\"}]";
JsonArray o = (JsonArray)new JsonParser().parse(jsonIn);

String sortColumn = o.get(0).getAsJsonObject().get("property").getAsString());
String sortDirection = o.get(0).getAsJsonObject().get("direction").getAsString());

#4楼

The simplest way is to use the JsonPrimitive class, which derives from JsonElement , as shown below: 最简单的方法是使用从JsonElement派生的JsonPrimitive类,如下所示:

JsonElement element = new JsonPrimitive(yourString);
JsonObject result = element.getAsJsonObject();

#5楼

I believe this is a more easy approach: 我相信这是一个更简单的方法:

public class HibernateProxyTypeAdapter implements JsonSerializer<HibernateProxy>{

    public JsonElement serialize(HibernateProxy object_,
        Type type_,
        JsonSerializationContext context_) {
        return new GsonBuilder().create().toJsonTree(initializeAndUnproxy(object_)).getAsJsonObject();
        // that will convert enum object to its ordinal value and convert it to json element

    }

    public static <T> T initializeAndUnproxy(T entity) {
        if (entity == null) {
            throw new 
               NullPointerException("Entity passed for initialization is null");
        }

        Hibernate.initialize(entity);
        if (entity instanceof HibernateProxy) {
            entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()
                    .getImplementation();
        }
        return entity;
    }
}

And then you will be able to call it like this: 然后您将可以这样调用它:

Gson gson = new GsonBuilder()
        .registerTypeHierarchyAdapter(HibernateProxy.class, new HibernateProxyTypeAdapter())
        .create();

This way all the hibernate objects will be converted automatically. 这样,所有休眠对象将自动转换。


#6楼

//import com.google.gson.JsonObject;  
JsonObject complaint = new JsonObject();
complaint.addProperty("key", "value");
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172479.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OpenCV 在android studio 中的用法

    OpenCV 在android studio 中的用法

    2021年5月25日
    122
  • css 滤镜之AlphaImageLoader「建议收藏」

    css 滤镜之AlphaImageLoader「建议收藏」CreateTime–2017年12月25日17:05:37Author:Marydonie滤镜特效之AlphaImageLoader作用:用于设置背景图片特效样式使用条件:IE8及以下

    2022年7月3日
    19
  • springboot整合tkmybatis以及使用

    springboot整合tkmybatis以及使用经常用 mybatis 的的都知道 使用 mybatisorm 框架存在一个非常不友善的问题就是 就是每操作一个单表就需要自己手写一个 xml 文件 虽然说可以用工具生成 xml 和实体类可以解决这个问题 但是二次开发的时候对某个表字段进行修改的时候 生成 xml 文件就不现实啦 最近发现 tkmybatis 就非常好的解决了这个问题 在这里和大家分享一下 框架配置这里需要引用到的包 mybat

    2025年6月15日
    2
  • 带case操作的update语句_多个case when嵌套

    带case操作的update语句_多个case when嵌套1、场景:由于多次循环执行数据库操作是非常耗费性能的。因此,我们需要尽可能一条UPDATE语句更新多条数据。2、方式:casewhen拼凑UPDATE表名SET(目标字段)BRANCH_NO=CASEWHEN(筛选条件)BANK_BRANCH_ID=’-10212’THEN ‘TU32958123’WHENBANK_BRANCH_ID=’-10213’THEN ‘TU32958112’ELSE’测试’END,COMMENTS=CASEWH

    2025年9月21日
    11
  • JAVA之文件操作[通俗易懂]

    JAVA之文件操作[通俗易懂]Console此类包含多个方法,可访问与当前Java虚拟机关联的基于字符的控制台设备(如果有)。虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。如果此虚拟机具

    2025年7月17日
    4
  • 03LaTeX学习系列之—TeXworks的使用

    03LaTeX学习系列之—TeXworks的使用

    2021年7月2日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号