我使用上面的代码来解析JSON
中的try-catch
。
JSONArray jsonRootObject = new JSONArray(text);
JSONArray jsonArray = jsonRootObject.optJSONArray(2);
name = jsonArray.toString();
Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show();
我在下面的代码中使用2作为索引,因为我会从候选人那里获得值。我认为,这很奇怪,因为数组中没有键值对。我想只得到这个数组中的第一个键(在这个例子中是subtest1
。),它的值是没有意义的。
{
"images": [
{
"time": 2.86091,
"transaction":
{
"status": "Complete",
"subject": "test2",
"confidence": 0.77,
"gallery_name": "gallerytest1",
},
"candidates": [
{
"subtest1": "0.802138030529022",
"enrollment_timestamp": "1416850761"
},
{
"elizabeth": "0.802138030529022",
"enrollment_timestamp": "1417207485"
},
{
"elizabeth": "0.777253568172455",
"enrollment_timestamp": "1416518415"
},
{
"elizabeth": "0.777253568172455",
"enrollment_timestamp": "1416431816"
}
]
} ]
}
答案 0 :(得分:2)
试试这个,看看它是否解决了你的问题
JSONArray CandidatesArr = new JSONArray(jsonRootObject.getString("candidates"));
JSONObject CandidatesOBJ = CandidatesArr.getJSONObject(0);
String name=CandidatesOBJ.getString("subtest1");
修改强>
要检查您的密钥子集1是否存在,请尝试以下代码:
String name=""
if(CandidatesOBJ.has("subtest1")){
name=CandidatesOBJ.getString("subtest1");
}
答案 1 :(得分:1)
你的解析器应该是.FYI JSONArray没有键值对,但JSONObject没有。
JSONObject root = new JSONObject(text);
JSONArray jarray = root.optJSONArray("images);
if(jarray != null){
JSONObject jObject = jarray.optJSONObject(0);
if(jObject != null){
JSONArray candidates = jObject.optJSONArray("candidates");
JSONObject jObj = jarray.optJSONObject(0);
if(jObj != null){
String subTest = jObj.optString("subtest1");
}
}
}