gpt4 book ai didi

java - 如何访问没有名称的对象内的 JSON 对象

转载 作者:行者123 更新时间:2023-11-30 00:13:49 26 4
gpt4 key购买 nike

我有这个 JSON

{
"success": true,
"shippingMethod": [
{
"flat": {
"code": "flat.flat",
"title": "Flat Shipping Rate",
"cost": "5.00",
"tax_class_id": "9",
"text": "$5.00"
}
},
{
"zajil": {
"code": "zajil.zajil",
"title": "Zajil Shipping",
"cost": "26",
"tax_class_id": "0",
"text": "$26.00"
}
}
]
}

注意 array 中的每个真正的object 都在一个没有名称的不必要的对象中,即 flat 和上面代码中的zajil在另一个对象中。
我只需要那些嵌套对象 flatzajil 中的数据。当我尝试这段代码时

JSONArray shippingMethods = response.optJSONArray("shippingMethod");
for (int i = 0; i < shippingMethods.length(); i++) {
JSONObject shippingObj = shippingMethods.optJSONObject(i);
JSONObject shippingMethod = shippingObj.optJSONObject("");
Iterator<?> keys = shippingObj.keys();
shippingMethod.optString("title");
shippingMethod.optString("cost");
}

我想我可以得到没有像

这样的名字的 对象
JSONObject shippingMethod = shippingObj.optJSONObject("");

但它不起作用,并在从中获取内容时抛出 NullPointerException。然后我尝试 iterate keys 就像

Iterator<?> keys = shippingObj.keys();

它不显示任何内容,因为此对象不直接包含任何键。所以我的问题是如何从上面的 JSON 中获取所需的数据 titlecost我不能更改JSON,因为它是客户网站的默认结构。

如有任何帮助,我们将不胜感激。

最佳答案

这样试试,可能对你有帮助

//get response
JSONObject jsonObject = new JSONObject("response");

//get status
boolean success = jsonObject.getBoolean("success");

if(success){
//get jsonarray from response
JSONArray shippingMethodArray = jsonObject.getJSONArray("shippingMethod");

//iterate array
for(int i=0; i<shippingMethodArray.length(); i++){

jsonObject = shippingMethodArray.getJSONObject(i);

//get all keys from jsonObject
List<String> allKeys = getAllKeys(jsonObject);

//iterate all keys
for(String key: allKeys) {

//get jsonObject by key
jsonObject = jsonObject.getJSONObject(key);

//get data
String title = jsonObject.getString("title");
String cost = jsonObject.getString("cost");
}
}
}else {
//do if not success...
}


//returns all keys from jsonobjects
private List<String> getAllKeys(JSONObject jsonObject) throws JSONException{
List<String> keys = new ArrayList<String>();

Iterator<?> iterator = jsonObject.keys();
while( iterator.hasNext() ) {
String key = (String)iterator.next();
keys.add(key);
}
return keys;
}

关于java - 如何访问没有名称的对象内的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657664/

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