我正在使用Java,我有一个JSON字符串:
{
"name" : "abc" ,
"email id " : ["abc@gmail.com","def@gmail.com","ghi@gmail.com"]
}
Run Code Online (Sandbox Code Playgroud)
那我的Java地图:
Map<String, Object> retMap = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)
我想将JSONObject中的所有数据存储在该HashMap中.
任何人都可以为此提供代码吗?我想使用这个org.json库.
我正在尝试简化我的代码:我想存储键和值(所有字符串).
我实际上是用它Map<String, Object>来存储它.hat方式Object可以是value(String)或新节点(Map<String, Object>).
我怎么能简化这段代码?递归函数会很好.
try {
JsonParser jsonParser = new JsonFactory().createJsonParser(content);
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String key = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
mData.put(key, new HashMap<String, Object>());
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String subkey = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
Map<String, Object> subdata = (Map<String, Object>) mData.get(key);
subdata.put(subkey, new HashMap<String, Object>());
while (jsonParser.nextToken() != …Run Code Online (Sandbox Code Playgroud) 我正在努力从格式如下的 JSON 文件中检索一些值:
{
"search": {
"entry": [
{
"found": "identity=9454532,l=big,ton=grand,k=molvi",
"attribute": [
{
"name": "firstname",
"value": [
"Lucas"
]
},
{
"name": "lastname",
"value": [
"Brandon"
]
}
]
}
],
"return": {
"code": 0,
"message": "Success",
"count": 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的方法(json、gson、jayway-JsonPath),但我无法从“属性”数组中获取值,只能从第一个数组中获取值。我不知道如何指定“属性”是 JSONArray 而不是 JSONObject 或如何设置正确的路径。这是我使用的最后一个代码,它在找到数组时停止:
public void String nameObtain (String email) throws IOException{
String link = "http://jsonfile/" + email;
JSONObject json = readJsonFromUrl(link);
JSONObject rootObject = json.getJSONObject("search");
JSONArray firstArray = rootObject.getJSONArray("entry");
for (int i = 0, size …Run Code Online (Sandbox Code Playgroud)