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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 运算放大器的基本原理

    运算放大器的基本原理运算放大器的基本原理来源:21ic作者:关键字:运算放大器  原理    运算放大器(OperationalAmplifier,简称OP、OPA、OPAMP)是一种直流耦合﹐差模(差动模式)输入、通常为单端输出(Differential-in,single-endedoutput)的高增益(gain)电压放大器,因为刚开始主要用于加法,乘法等运算电路中,因而得名。

    2022年5月3日
    33
  • Linux下快速设定ip bond

    在计算机网路普及的初期,很多OS系统都使用的为单网卡方式,即一个网卡使用一个IP地址。随着网络要求的不断提高,我们可以对多个网卡进行绑定聚合当一个逻辑网络接口来使用,从而大幅提升服务器的网络吞吐(I/

    2021年12月26日
    68
  • 小程序获取用户信息相关 获取头像名称 微信用户

    小程序获取用户信息相关 获取头像名称 微信用户微信小程序登录信息获取,获取到的姓名”微信用户”以及头像为默认头像,目前只能按照以下方式去改了。以前的getUserInfo已经不能直接调用了,现在只能使用getUserProfile,需要点击触发时间调起,可以做个引导性的点击事件触发。官方公告:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801官方文档:https://developers.weixin.qq.com/m

    2022年8月19日
    12
  • 个人号微信api接口开发_API接口授权系统php源码

    个人号微信api接口开发_API接口授权系统php源码最近公司需求开发一套自定义的微信机器人,需求是可以自动聊天,自动回复,发朋友圈,转发语音,以及自动添加好友等,还可以取聊天内容保存自己数据库里,what????这怎么可能实现,一口回绝,当产品经理拿着现成的市场产品打在脸上的时候,才发现微信真的可以实现!!调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于得到以下知识,都是走过的心酸泪,大家开发完成,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统

    2022年10月1日
    2
  • 解决VirtualBox错误:“FATAL:No bootable medium found!”

    解决VirtualBox错误:“FATAL:No bootable medium found!”

    2021年10月28日
    165
  • String与Integer互相转换

    //String转换IntegerStringstr="a";Integeri=null;if(str!=null){i=Integer.valueOf(str);}//方法一:Integer类的静态方法toString():Integera=2;Stringstr=Integer.toString(a)//方法二:Integer类的…

    2022年4月6日
    66

发表回复

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

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