来自JSONArray(java/android)的键值列表
我有一个JSON,它是由JSONArray组成的。如何从JSONArray中获取键字符串列表 例如:来自JSONArray(java/android)的键值列表,java,json,Java,Json,我有一个JSON,它是由JSONArray组成的。如何从JSONArray中获取键字符串列表 例如: { "mainKey": [ { "keyValue1": [ { "id": 9000, "name": "John Doe" } ] }, { "keyValue2": [] }, { "keyValue3": []
{
"mainKey": [
{
"keyValue1": [
{
"id": 9000,
"name": "John Doe"
}
]
},
{
"keyValue2": []
},
{
"keyValue3": []
},
{
"keyValue4": []
}
]
}
我想获得一个带有keyValue1、keyValue2等的ArrayList。我应该如何在Java中执行此操作?尝试以下操作:
JSONObject obj = new JSONObject(yourJsonString);
JSONArray array = obj.getJSONArray("mainKey");
for(int n = 0; n < array.length(); n++)
{
JSONObject keyObject = array.getJSONObject(n);
Iterator<?> keys = keyObject.keys();
while( keys.hasNext() ) {
String key = (String)keys.next();
if ( obj.get(key) instanceof JSONArray ) {
System.out.println(key);
}
}
}
JSONObject obj=新的JSONObject(yourJsonString);
JSONArray数组=obj.getJSONArray(“mainKey”);
对于(int n=0;n
我在Android异步任务中执行此操作:
ArrayList<String> arrayList = new ArrayList<String>();
Spinner spinner;
ArrayList ArrayList=new ArrayList();
纺纱机;
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u fragment\u类,容器,false);
微调器=(微调器)rootView.findViewByID(R.id.spinner);
LoadFromAPI任务=新建LoadFromAPI();
task.execute(url);//本地主机中的有效url
ArrayAdapter=新的ArrayAdapter(rootView.getContext(),
android.R.layout.simple\u微调器\u项目,arrayList);
返回rootView;
}
私有类LoadFromAPI扩展了异步任务{
受保护的void doInBackground(字符串…url){
JSONObject obj=新的JSONObject(您的JSONString);
JSONArray数组=obj.getJSONArray(“mainKey”);
对于(int n=0;n
在Java 8中:
import org.json.JSONArray;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class JSONFun {
public static List<String> firstKeysOf(JSONArray array) {
return IntStream.range(0, array.length())
.mapToObj(i -> array.getJSONObject(i).keys().next())
.collect(Collectors.toList());
}
}
import org.json.JSONArray;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.IntStream;
公务舱JSONFun{
公共静态列表(JSONArray数组){
返回IntStream.range(0,array.length())
.mapToObj(i->array.getJSONObject(i).keys().next())
.collect(Collectors.toList());
}
}
您尝试过什么吗?尝试org.json库:我尝试过,但是使用arrayList.add(key)而不是println,我得到的是一个空列表。1请注意,这是不安全的。如果数组中包含除至少有一个键的JSONObject以外的任何内容,它将严重失败。我使用的是Java 8,但我无法导入Java.util.stream库!
import org.json.JSONArray;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class JSONFun {
public static List<String> firstKeysOf(JSONArray array) {
return IntStream.range(0, array.length())
.mapToObj(i -> array.getJSONObject(i).keys().next())
.collect(Collectors.toList());
}
}