这就是我想做的事
我有一个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);
}
答案 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]
}
}