【发布时间】:2018-09-17 20:08:53
【问题描述】:
我有一个 Android 项目,我在其中使用存储的 JSON 中的一些数据。我在几个地方使用它来获取值,但是现在,我还需要获取键的名称而不是值。有可能吗?我正在使用“org.json”库来解析 JSON。
我的 JSON:
{
"cookbook": {
"products": {
"factory1": {
"product": "product1",
"rate": 2,
},
"factory2": {
"product": "product2",
"rate": 14,
"requires": {
"money": 20,
"product3": 3,
"product4": 2
}
}
}
}
正如我所说,我在检索值方面没有问题,但现在我在变量中有一个产品名称,比如说“product2”,我需要确定哪个工厂生产该产品。所以我需要返回'factory2'。
我试过了:
mainCookbookJson = new JSONObject(loadJSONFromAsset(activity, "cookbook.json"));
JSONObject cookbookJson = mainCookbookJson.getJSONObject("cookbook");
JSONObject productsJson = cookbookJson.getJSONObject("products");
for(Iterator<String> iter = productsJson.keys(); iter.hasNext();) {
String key = iter.next();
if (productsJson.getJSONObject(key).getString("product").equals(product)) {
return productsJson.getString(key);
//return productsJson.getJSONObject(key).toString(); // Also tried
}
}
但这会返回格式化为字符串的整个对象。
感谢您的任何建议。
【问题讨论】:
-
您可能想要返回
key,因为它的值有factory1、factory2等 -
@Apoorv 是的,完全正确。这就是我所需要的,也是问题中所说的,但我不知道如何实现它。
-
哦,我明白了,你的意思是一个变量名'key'。
标签: android json key key-value