我有一个像下面这样的json(结果),我需要Key“extra”的值,即“联系办公室”。 我尝试了以下代码,但它没有用,你能帮忙吗?
JSONArray jsonArray = new JSONArray(result.toString().trim());
JSONObject json = jsonArray.getJSONObject(0).getJSONObject("student").getJSONArray("department").getJSONObject(0).getJSONObject("classes");
String val=json.getString("extra");
// JSON示例
{
"student": [
{
"department" : [
{
"classes" : [
{
"grade" : "A",
"fine" : "No"
},
{
"grade" : "B",
"fine" : "Yes",
"extra" : "contact office"
},
{
"grade" : "C",
"fine" : "NA"
}
],
}
],
}
],
}
答案 0 :(得分:1)
你混淆了JSONArray
和JSONObject
几次,不确定我必须改变什么,但以下内容会有效:
JSONObject jsonObject = new JSONObject(result.toString().trim());
JSONArray jsonArray = jsonObject
.getJSONArray("student").getJSONObject(0).getJSONArray("department").getJSONObject(0)
.getJSONArray("classes");
String val = jsonArray.getJSONObject(1).getString("extra");
答案 1 :(得分:0)
这是一个完整的样本吗?如果是这样,它不会以数组开头。学生是对象而不是数组。如果它只是数组中一个项目的样本,那么你就可以了。
我注意到的第二件事是:getJSONObject("classes")
。类是一个数组而不是一个对象,这不会起作用。
答案 2 :(得分:0)
您是否要考虑使用JsonPath。你可以这样做 -
std::cout << *pa << std::endl;