我的json
1. {"distinctvalue":"-1","classLabel":[{"key":"-1","value":0},{"key":"\u003e4.0","value":3}],"total":3}
2. {"distinctvalue":"1","classLabel":[{"key":"\u003c\u003d4.0","value":1},{"key":"1","value":0}],"total":1}
我想提取" classLabel"。所以我有一个POJO类
public class AttrClsJson {
/**
* @param args
*/
String key;
int value;
代码
for (int i = 0; i < arr.size(); i++) {
System.out.println("arr.get(i).toString()---------->"+arr.get(i).toString());
AttrClsJson clsInfo = gson.fromJson(arr.get(i).toString().trim(), AttrClsJson.class);
int val = clsInfo.getValue();
System.out.println("val--- "+val);
}
对于第一个json,我能够从&#34; classLabel&#34;
获取密钥和值1. arr.get(i).toString()---------->{key=-1, value=0.0}
val--- 0
arr.get(i).toString()---------->{key=>4.0, value=3.0}
val--- 3
2.
arr.get(i).toString()---------->{key=<=4.0, value=1.0}
对于上面的字符串,我无法获得该值。
行"AttrClsJson clsInfo = gson.fromJson(arr.get(i).toString().trim(), AttrClsJson.class);"
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 8
at com.google.gson.Gson.fromJson(Gson.java:818)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.google.gson.Gson.fromJson(Gson.java:689)
我做错了吗? 请建议。
修改
{key =&lt; = lt = = 4.0,value = 1.0}
当我检查时当key包含&#34;&lt; =&#34;时未检索到该值,对于所有其他人,我能够获得该值。
答案 0 :(得分:1)
看起来你解析的次数太多了。你可能不得不解析JSON字符串以获得arr。你正在解析arr的内容,但它已被解析,不再是JSON字符串。
答案 1 :(得分:0)
在字符串中的每个特殊字符前添加反斜杠。
实施例。 String =&#34; [{\&#34; key \&#34;:\&#34; \ u003e4.0 \&#34;,\&#34; value \&#34;:3}] &#34 ;;