我正在调用外部Web服务,他们以json格式返回响应,如下所示。但是当我尝试用gson解析它会抛出一个错误。此外,当我针对jsonlint.com验证它时,它显示无效的json格式。现在我想知道我是做错了什么还是他们以错误的格式发送json数据。如果它的格式正确,那么我错过了正确解析它
({"data":[["0",22247,2764,99.96,0,0],["UNDEFINED",3,1,0.04,-2.08,0]],"totalCount": 2})
错误Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 3 path $
代码JsonElement jelement = new JsonParser().parse(data);
答案 0 :(得分:1)
这些问题可能类似于此Gson Json parser Array of Arrays
你必须创建一个像这样的对象:
package pruebas;
import java.util.List;
public class ResponseObject {
private List<List<Object>> data; // parse the "data":[["0",22247,2764,99.96,0,0]
private int totalCount; // parse the "totalCount": 2
public List<List<Object>> getData() {
return data;
}
public void setData(List<List<Object>> data) {
this.data = data;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}}
您必须在代码中调用gson函数:
String json = "{\"data\":[[\"0\",22247,2764,99.96,0,0],[\"UNDEFINED\",3,1,0.04,-2.08,0]],\"totalCount\": 2}";
final Gson gson = new Gson();
ResponseObject response = gson.fromJson(json, ResponseObject.class);
data属性必须是List<List<Object>>
,因为您不知道哪种对象包含json数组。
答案 1 :(得分:0)
尝试这样做:
JsonElement jelement = new JsonParser().parse(data.substring(1, data.length()-1));
结果是:
{
"data": [
[
"0",
22247,
2764,
99.96,
0,
0
],
[
"UNDEFINED",
3,
1,
0.04,
-2.08,
0
]
],
"totalCount": 2
}