如何将Json String填充到Android微调器中

问题描述 投票:0回答:2

我的Json响应不是数组。如下所示(键和值是动态的):

{
    "key1": "value1",
    "key2": "value2",
    "key3": "value3",
    "key4": "value4",
    "key5": "value5",
    "key6": "value6",
    "key7": "value7",
    "key8": "value8",
}

如何将值填充到Android微调器中或如何从此Json文件创建地图?

android json dictionary spinner
2个回答
0
投票

[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


0
投票

整个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);
© www.soinside.com 2019 - 2024. All rights reserved.