在方法中获取不带Arrayname的JSONArray

时间:2018-08-29 16:27:01

标签: java android json vuforia

我需要从字符串中的数据中获取JSONArray,但不提及数组名,如下所示。它应该从JSON数据中获取数组名称本身。

这是我的代码

            String metadata = result.getMetaData();
            JSONObject jsonObject = new JSONObject(metadata);

            JSONArray jsonArray = jsonObject.getJSONArray("Shoe2");

              for(int i =0 ; i<jsonArray.length();++i) {
                JSONObject rec = jsonArray.getJSONObject(i);
                barcode = rec.getString("BarcodeId");
                material=rec.getString("Material");
                category=rec.getString("Category");

            }
            Baroode.setText(barcode);
            Material.setText(material);
            Category.setText(category);

现在我需要的是自己获取JSON数组名“ SHoes1”,而不是像我那样使用显式命名。

我的JSON字符串看起来像这样

{
"Shoe2":[{
           "BarcodeId" : "9770012345673",
            "   " : "Men",
            "Material" : "Panther",
            "ProductId" : "ND-TR-0089",
            "ProductName" : "Black Retro"
        }
    ]
}

我们将不胜感激:)

1 个答案:

答案 0 :(得分:0)

假设您的json文件名为test.json。如果您将数组作为根json的第一个元素,则可以通过以下代码进行访问:

package yourPackage;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) throws IOException {
        String metadata = new String(Files.readAllBytes(Paths.get("test.json")));
        JSONObject jsonObject = new JSONObject(metadata);

        JSONArray jsonArray = jsonObject.getJSONArray(jsonObject.keys().next().toString());

        System.out.println(jsonArray.getJSONObject(0));
    }
}

输出:

{"   ":"Men","ProductName":"Black Retro","Material":"Panther","ProductId":"ND-TR-0089","BarcodeId":"9770012345673"}

test.json:

{
  "Shoe2":[{
    "BarcodeId" : "9770012345673",
    "   " : "Men",
    "Material" : "Panther",
    "ProductId" : "ND-TR-0089",
    "ProductName" : "Black Retro"
  }
  ]
}