如何使用硬编码值解析 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);
我正在尝试解析 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);