验证json格式

时间:2015-11-04 15:18:37

标签: java json gson

我正在调用外部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);

2 个答案:

答案 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
}