如何使用硬编码值解析 JSON

How to parse JSON using hardocoded values

我正在尝试解析 json 但它给了我异常。

我将预期 json 硬编码为这样的字符串

  String stringJSON="[{\"value1\":\"ABC567123\",\"end_at\":\"08/28/2014 09:10:00\",\"start_at\":\"04/25/2016 09:20:00\"}]";

有效json是这样的

[
{
    "value1": "ABC567123",
    "end_at": "08/28/2014 09:10:00",
    "start_at": "04/25/2016 09:20:00"
}
]

现在我正尝试像下面那样解析 json 并得到异常。

JSONObject responseObJ;
    try {
        responseObJ= new JSONObject(stringJSON); //error here
        if(responseObJ!=null){
             //do something 
        }
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

请建议怎么做? //临时硬编码 - json 结果预计完全相同

是的,正如你所说,它有效 json 但它 JsonArray 不是 JsonObject。 只需从开头和结尾删除 []。

你的字符串应该是

String stringJSON="{\"value1\":\"ABC567123\",\"end_at\":\"08/28/2014 09:10:00\",\"start_at\":\"04/25/2016 09:20:00\"}";

或者如果您想使用当前字符串,请使用 JsonArray 而不是 JsonObject

JSONArray responseObJ= new JSONArray(stringJSON);

stringJSON 包含 JSONArray 而不是 JSONObject 作为 JSON 字符串中的根元素。

根据当前代码从字符串的开头和结尾删除 [],或者如果 JSON 数组中有多个 JSON 对象,则从 [= 中获取 JSONArray 11=]:

JSONArray responseObJ= new JSONArray(stringJSON);

你能试试 ScriptSerializer 的 Deserialize 方法吗class?喜欢:

        var scriptSerializer = new JavaScriptSerializer();
        var obj = scriptSerializer.Deserialize<Object>(str);

[ ] 他们显示其中有一个对象数组,因此您可以像这样检索它

JSONArray jsonArray= new JSONArray(stringJSON);

for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject = jObject.getJSONObject(i);

    // here you can get the values of objects stored in the jsonObject
}

在你的情况下,你只有一个对象,所以你不必使用循环,你可以像这样得到它

JSONArray jsonArray= new JSONArray(stringJSON);
JSONObject jsonObject = jObject.getJSONObject(0);