gpt4 book ai didi

java - 如何从 Json 对象获取值...?

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:42 26 4
gpt4 key购买 nike

如果 JsonArray 类型为“Personal”,如何从 json 对象获取值?我想要一个像这样的名称值对:

String s = "February" ;
int i = 3;

我真的很感激一些关于如何进一步进行的建议。

提前致谢,桑卡

String monthArray[] = { "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November",
"December" };

System.out.println("Size of month array:-->> " + monthArray.length);

JSONObject jbj = new JSONObject();
JSONObject jbj1 = new JSONObject();
JSONObject jbj2 = new JSONObject();

JSONObject general = new JSONObject();

JSONArray jarray = new JSONArray();
JSONArray jarray1 = new JSONArray();
JSONArray jarray2 = new JSONArray();

JSONObject finalGen = new JSONObject();

jbj.put("February", 3);
jbj.put("March", 15);
jbj.put("April", 6);
jbj.put("July", 10);
jbj.put("December", 5);

jbj1.put("February", 3);
jbj1.put("March", 14);
jbj1.put("April", 23);
jbj1.put("May", 6);

jbj2.put("February", 33);
jbj2.put("March", 12);
jbj2.put("May", 4);
jbj2.put("June", 7);

jarray.add(jbj);
jarray1.add(jbj1);
jarray2.add(jbj2);

general.put("Personal", jarray);
general.put("Common", jarray1);
general.put("Management", jarray2);
finalGen.put("FinalResultSet", general);

System.out.println("\n Personal Value :-->> " + finalGen.toString(3));

JSONObject finalson = JSONObject.fromObject(finalGen
.get("FinalResultSet"));
JSONArray jarra = finalson.getJSONArray("Personal");

for (int i = 0; i < jarra.size(); i++) {
JSONObject jb = jarra.getJSONObject(i);

for (int p = 0; p < monthArray.length; p++) {

String s = monthArray[p];

System.out.println("\n VALUE OF STR " + s);
String t = jb.getString(s);

System.out.println("\n VALUE OF STR Json Str " + t);

}
}

System.out.println("Personal String " + jarra);

}

我的输出:-

Size of month array:-->> 12

Personal Value :-->> {"FinalResultSet": {
"Personal": [ {
"February": 3,
"March": 15,
"April": 6,
"July": 10,
"December": 5
}],
"Common": [ {
"February": 3,
"March": 14,
"April": 23,
"May": 6
}],
"Management": [ {
"February": 33,
"March": 12,
"May": 4,
"June": 7
}]
}}

VALUE OF STR January

异常(exception):-

Exception in thread "main" net.sf.json.JSONException: JSONObject["January"] not found.
at net.sf.json.JSONObject.getString(JSONObject.java:2177)
at JFreechartDemo.XMLData.main(XMLData.java:68)

最佳答案

您正在尝试在 for 循环中获取键为“January”的字段值,但没有这样的字段。您应该首先将这样的键值对放入 JSON 对象中。

查看 JSONObject get 方法文档。那里有类似的东西:

Throws:
JSONException - if the key is not found.

因为如果没有键,get 方法会抛出异常,所以用月份迭代整个数组并尝试猜测特定月份是否在 JSON 中作为键并不是一个好主意。如果你愿意,你可以这样做,但你应该首先使用 has 方法来验证月份是否确实存在。

另一方面,您可以从 JSONObject 获取键的所有名称,然后仅对这些名称调用 get 方法。

关于java - 如何从 Json 对象获取值...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22502933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com