我使用的是Java,我有一个字符串是JSON:

{
"name" : "abc" ,
"email id " : ["abc@gmail.com","def@gmail.com","ghi@gmail.com"]
}

然后我的Java map :

Map<String, Object> retMap = new HashMap<String, Object>();

我想将来自JSONObject的所有数据存储在该HashMap中.

有人能提供这方面的代码吗?我想用org.json图书馆.

推荐答案

以递归方式:

public static Map<String, Object> jsonToMap(JSONObject json) throws JSONException {
    Map<String, Object> retMap = new HashMap<String, Object>();
    
    if(json != JSONObject.NULL) {
        retMap = toMap(json);
    }
    return retMap;
}

public static Map<String, Object> toMap(JSONObject object) throws JSONException {
    Map<String, Object> map = new HashMap<String, Object>();

    Iterator<String> keysItr = object.keys();
    while(keysItr.hasNext()) {
        String key = keysItr.next();
        Object value = object.get(key);
        
        if(value instanceof JSONArray) {
            value = toList((JSONArray) value);
        }
        
        else if(value instanceof JSONObject) {
            value = toMap((JSONObject) value);
        }
        map.put(key, value);
    }
    return map;
}

public static List<Object> toList(JSONArray array) throws JSONException {
    List<Object> list = new ArrayList<Object>();
    for(int i = 0; i < array.length(); i++) {
        Object value = array.get(i);
        if(value instanceof JSONArray) {
            value = toList((JSONArray) value);
        }

        else if(value instanceof JSONObject) {
            value = toMap((JSONObject) value);
        }
        list.add(value);
    }
    return list;
}

使用杰克逊图书馆:

import com.fasterxml.jackson.databind.ObjectMapper;

Map<String, Object> mapping = new ObjectMapper().readValue(jsonStr, HashMap.class);

Java相关问答推荐

如何在多个设备上同时运行Android Studio的项目?

'在使用apache poi生成Excel数据透视表时,行标签显示为第一列标题,并显示分类汇总

Spring Webocket:尽管凭据设置为False,但MLhttpsify和Fetch请求之间的CORS行为存在差异

为什么JFrame paint()多次绘制同一点(或根本不绘制)?

Oracle DUAL表上使用DDL时jOOQ问题的解析'

最小拓Flutter 排序的时间复杂度是多少?

为什么我们不能实现两个接口,其中一个接口有相同的签名,其中一个接口有默认的实现在java?'

使用OAuth 2.0资源服务器JWT时的授权(授权)问题

Docker不支持弹性APM服务器

是否为计划任务补偿系统睡眠?

根本不显示JavaFX阿拉伯字母

如何在透视表中添加对计数列的筛选?

为什么相同的数据条码在视觉上看起来不同?

在ECLIPSE上的M1 Pro上运行JavaFX的问题

在Spring Boot中使用咖啡因进行缓存-根据输出控制缓存

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

如果c不为null,Arrays.sort(T[]a,Comparator<;?super T>;c)是否会引发ClassCastException?

javax.crypto-密码对象-提供者服务是如何工作的?

始终使用Spring Boot连接mongodb上的测试数据库

[Guice/MissingImplementation]:未绑定任何实现