似乎无法弄清楚这一点.我在GSON中尝试JSON树操作,但我有一个案例,我不知道或有一个POJO转换为字符串,在转换之前JsonObject
.有没有办法直接从a String
到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])
Run Code Online (Sandbox Code Playgroud)
但a
失败了,JSON被转义并解析为JsonString
唯一,并
b
返回一个空JsonObject
.
有任何想法吗?
我试图用null值反序列化我自己的类.但我的代码不起作用.
我的json:
{"Text":null,"Code":0,"Title":"This is Sparta!"}
Run Code Online (Sandbox Code Playgroud)
在我的方法中,我执行以下操作:
this.setText(gson.fromJson(jsonObject.getString("Text"), String.class));
this.setTitle(gson.fromJson(jsonObject.getString("Title"), String.class));
this.setCode(gson.fromJson(jsonObject.getString("Faccode"), Integer.class))
Run Code Online (Sandbox Code Playgroud)
我没有反序列化整个对象,因为也可以有一个List<T>
.
错误:
myapp W/System.err? com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6 path $
myapp W/System.err? at com.google.gson.Gson.assertFullConsumption(Gson.java:786)
myapp W/System.err? at com.google.gson.Gson.fromJson(Gson.java:776)
myapp W/System.err? at com.google.gson.Gson.fromJson(Gson.java:724)
myapp W/System.err? at com.google.gson.Gson.fromJson(Gson.java:696)
Run Code Online (Sandbox Code Playgroud) 我不是Java开发人员,但是现在我正在用它编写一些测试,并且我遇到了简单的问题(我认为这对于"javaGuys"来说很简单).
在我的类Test中我得到的变量包含一些在JavaScript中看起来像对象的字符串(我的意思是JSON).这里是:
String myStringThatLooksLikeJSON = client.getStartSessionContent();
Run Code Online (Sandbox Code Playgroud)
在调试模式下,字符串的内容......:
myStringThatLooksLikeJSON = "{"context":"blabla","count":0,"value":[{"args":"speech-model","id":"1203"}]}"
Run Code Online (Sandbox Code Playgroud)
现在我的问题.我怎样才能获得价值,例如"args"?
在JavaScript中,它可以很容易地完成:
console.log(myStringThatLooksLikeJSON.value[0].args, "args");
Run Code Online (Sandbox Code Playgroud)
在我的控制台中,我可以看到speech-model args
.
但是如何在Java中做到这一点?可能吗?最纯粹的共同和简单的方式!Plz任何人帮助:)希望我足够清楚.
我在用gson反序列化json中的JSON时非常艰难。
我有以下json:
{"races":[
{"id":1,"mask":1,"side":"alliance","name":"Human"},
{"id":2,"mask":2,"side":"horde","name":"Orc"},
{"id":3,"mask":4,"side":"alliance","name":"Dwarf"}]}
Run Code Online (Sandbox Code Playgroud)
我现在拥有的Java代码是:
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Gson gson = new Gson();
Type type = new TypeToken<List<WoWDetails>>(){}.getType();
List<WoWRaces> races = gson.fromJson(response, type);
for (WoWRaces race : races){
if(raceID.equals(race.id)) {
raceName = race.name;
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
errorMSG = (TextView) findViewById(R.id. textView5);
errorMSG.setText("That didn't work! URL: \n"+error);
errorMSG.setVisibility(View.VISIBLE);
}
});
Run Code Online (Sandbox Code Playgroud)
WoWRaces.java中的以下代码:
WoWRaces.java
public class WoWRaces {
public …
Run Code Online (Sandbox Code Playgroud)