我需要从字符串中的数据中获取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"
}
]
}
我们将不胜感激:)
答案 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"
}
]
}