Android - 除了值之外,如何从 JSON 获取键名
Android - How to get key name from JSON in addition to the value
我有一个 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' 我需要确定哪个工厂生产这个产品。所以我需要得到 return '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
}
}
但这是 return 将整个对象格式化为字符串。
感谢您的任何建议。
尝试只返回 key
。
for(Iterator<String> iter = productsJson.keys(); iter.hasNext();) {
String key = iter.next();
if (productsJson.getJSONObject(key).getString("product").equals(product)) {
return key;
}
}
我有一个 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' 我需要确定哪个工厂生产这个产品。所以我需要得到 return '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
}
}
但这是 return 将整个对象格式化为字符串。
感谢您的任何建议。
尝试只返回 key
。
for(Iterator<String> iter = productsJson.keys(); iter.hasNext();) {
String key = iter.next();
if (productsJson.getJSONObject(key).getString("product").equals(product)) {
return key;
}
}