Java,映射JSON的键

时间:2019-02-24 15:52:33

标签: java json

这就是我想做的事
我有一个json,例如:

{
  "demoNumber":123,
  "demoText":"asdasdasd"
}

我想从中创建一个简单的String数组,应该是

["demoNumber","demoText"]

在应用程序中,我们使用户可以添加任何类型的数据,因此我们无法为所有内容创建数据模型,这不是选择

我已将json添加到我的Gradle中:

dependencies {
    implementation 'org.json:json:20180130'
}

但是它仍然找不到方法。

我尝试过的:

JSONObject jo = null;
try {
    jo = new JSONObject(
        "{\"city\":\"chicago\",\"name\":\"jon doe\",\"age\":\"22\"}"
    );
} catch (JSONException e) {
    e.printStackTrace();
}
Set<String> keys = jo.toMap().keySet();

我仍然收到错误:“无法解析方法'toMap()'”。 Gradle已导入,我什至下载了包含这些文件的jar文件,并将其添加到libs中, Android Studio仍然找不到该方法。

工作解决方案:

ArrayList keyList = new ArrayList<>();
    Iterator< ? > keys = jo.keys();

    while (keys.hasNext()) {
        String key = (String) keys.next();
        keyList.add(key);
    }

1 个答案:

答案 0 :(得分:0)

toMap()中没有org.json方法,只需直接在keySet()上调用JsonObject

Set<String> keys = jo.keySet();

同一here的文档。

下面的代码有效

import java.util.Set;
import org.json.JSONException;
import org.json.JSONObject;

public class ExampleMainOne {

public static void main(String[] args) {

    JSONObject jo = null;
    try {
        jo = new JSONObject("{\"city\":\"chicago\",\"name\":\"jon doe\",\"age\":\"22\"}");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Set<String> keys = jo.toMap().keySet();

    System.out.println(keys);    //[city, name, age]

    }

 }