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;
    }
}