我的Json响应不是数组。如下所示(键和值是动态的):
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5",
"key6": "value6",
"key7": "value7",
"key8": "value8",
}
如何将值填充到Android微调器中或如何从此Json文件创建地图?
[JsonObject json = new JsonObject();
解决方案1
使用GSON库将JsonObject转换为Map,如下所示
HashMap<String, Object> yourHashMap = new Gson().fromJson(json.toString(), HashMap.class);
解决方案2
HashMap<String, String> map = new HashMap<String, String>();
Iterator<?> keys = json.keys();
while( keys.hasNext() ){
String key = (String)keys.next();
String value = jObject.getString(key);
map.put(key, value);
}
您可以使用以下代码将地图值转换为列表
List<String> list = new ArrayList<String>(map.values());
或您可以使用以下代码将密钥转换为列表
List<String> list = new ArrayList<String>(map.keySet());
将列表传递给微调器的ArrayAdapter
整个JSON响应可以读取为JSONObject
,您可以循环访问其元素并将String数据获取到列表中。
String jsonResponse = "{\n" +
" \"key1\": \"value1\",\n" +
" \"key2\": \"value2\",\n" +
" \"key3\": \"value3\",\n" +
" \"key4\": \"value4\",\n" +
" \"key5\": \"value5\",\n" +
" \"key6\": \"value6\",\n" +
" \"key7\": \"value7\",\n" +
" \"key8\": \"value8\"\n" +
"}";
ArrayList<String> spinnerList = new ArrayList<>();
try {
JSONObject root = new JSONObject(jsonResponse);
for (int i = 1; i <= root.length(); i++) {
String value = root.getString("key" + i);
spinnerList.add(value);
}
} catch (JSONException e) {
e.printStackTrace();
}
Spinner spinner = findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, spinnerList);
spinner.setAdapter(adapter);