我好像搞不懂。 我试图在GSON JSON树操作,但我有一个情况下,我不知道或有一个POJO转换成字符串,在转换为JsonObject之前。有没有办法直接从字符串到JsonObject?

我尝试了以下(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])

但是a失败,JSON将被转义并解析为JsonString,并且 b返回一个空的JsonObject。

什么好主意吗?


当前回答

尝试使用getAsJsonObject()而不是在接受的答案中使用的直接强制转换:

JsonObject o = new JsonParser().parse("{\"a\": \"A\"}").getAsJsonObject();

其他回答

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

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

使用JsonParser;例如:

JsonObject o = JsonParser.parseString("{\"a\": \"A\"}").getAsJsonObject();

遇到一个在EXTJS 4中对数据存储进行远程排序的场景。X,其中字符串作为JSON数组发送到服务器(只有1个对象)。 类似于前面介绍的简单字符串,只需要先转换为JsonArray,然后再转换为JsonObject。

来自客户端的字符串:[{"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());

jsonparser #parse(java.lang.String)现在已弃用

所以使用com.google.gson。JsonParser#parseString,它工作得很好

芬兰湾的科特林的例子:

val mJsonObject = JsonParser.parseString(myStringJsonbject).asJsonObject

Java示例:

JsonObject mJsonObject = JsonParser.parseString(myStringJsonbject).getAsJsonObject();

刚刚遇到了同样的问题。你可以为JsonElement类编写一个简单的自定义反序列化器:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

GsonBuilder gson_builder = new GsonBuilder();
gson_builder.registerTypeAdapter(
        JsonElement.class,
        new JsonDeserializer<JsonElement>() {
            @Override
            public JsonElement deserialize(JsonElement arg0,
                    Type arg1,
                    JsonDeserializationContext arg2)
                    throws JsonParseException {

                return arg0;
            }
        } );
String str = "{ \"a\": \"A\", \"b\": true }";
Gson gson = gson_builder.create();
JsonElement element = gson.fromJson(str, JsonElement.class);
JsonObject object = element.getAsJsonObject();