2015-07-09 5 views
-2

Мой JSONне в состоянии разобрать JSON, получая com.google.gson.stream.MalformedJsonException: незавершенная объект

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 я в состоянии получить ключ и значение из «classLabel»

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} 

Для выше string Я не могу получить значение.

И ошибка генерируется в строке "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) 

я делаю что-то неправильно? Пожалуйста, предложите.

EDIT

{ключ = < = 4,0, значение = 1,0}

Когда я исследовал значение не извлекается, когда ключ содержит «< =», для всех остальных я могу получить значение ,

+1

Как вы получаете массив 'arr'? И что это такое? –

+2

Похож на «карту», ​​которая создает значение «toString», которое вообще не является JSON. –

+0

JSONArray arr = attrInfo.getClassLabel(); из другого POJO –

ответ

1

Похоже, вы разбираете слишком много раз. Вы, по-видимому, должны были разбирать строки JSON, чтобы получить обр. Вы разбираете содержимое arr, но оно уже разобрано и больше не является строкой JSON.

0

Добавить обратную косую черту перед каждым специальным символом в вас.

Ex. String = "[{\" key \ ": \" \ u003e4.0 \ ", \" value \ ": 3}]";

Смежные вопросы