2015-12-22 23 views
0

我在这个格式的JSON字符串:JSON字符串到Java对象GSON

[ 
    { 
    "key1": { "key1":"val1","key2":"val2" }, 
    "key2": { "key1":"val1","key2":"val2" } 
    } 
] 

解析它,我创建一个Java类:

class data { 
    String key; 
    List <content> listdata; 
    /* getter and setter for the attribute above */ 
    ... 
    } 

现在我跟着GSON文件,并尝试exract data:

Gson gson =new Gson(); 
data[] ints = gson.fromJson(MyjsonString, data[].class); 

我从Gson API得到解析错误,我做错了什么?

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path 
+0

您确定,您的数据不应该是这样吗? '['key1':'val1','key2':'val2']},{ “key”:[“key1”:“val1”,“key2”:“val2”] }]' –

+0

没有它像我上面提到的 – Lhoussaine

回答

1

为了解析json像下面的类

class data { 
String key; 
List <content> listdata; 
/* getter and setter for the attribute above */ 
... 
} 

你需要一个json类似如下

"data" : { 
"key": "value", 
"listdata": [{ content object key attributes here }] 
} 

至于你的异常清晰地说:BEGIN_ARRAY but was STRING所以你必须使用数组中json解析。

在如果你想有一个类的评论

的答复在解析以下JSON

{ 
"key1": { "key1":"val1","key2":"val2" }, 
"key2": { "key1":"val1","key2":"val2" } 
} 

然后,你将不得不类结构如下

class Data { 
Map<String, String> key1; 
Map<String, String> key2; 
/* getter and setter for the attribute above */ 
} 
+0

谢谢你的答案,我知道我必须改变我的班级结构,但是,你能建议我一个新的吗? – Lhoussaine

+0

我不能这样改变我的Json字符串,但我可以更改我的Java类以满足要求。 – Lhoussaine

+0

我已更新答案plz看看它是否会帮助你! –

0

按JSON的,此类结构的工作原理如下:

class data { 
List <Map<String,Content> data; 
/* getter and setter for the attribute above */ 
... 

}

+0

我会测试这个 – Lhoussaine

+0

COM .google.gson.stream.MalformedJsonException:期望':'在第1行第9列路径 – Lhoussaine

+0

json有些问题,请检查您的json,您可以使用jsonlint.com – Sandeep