JSON格式转MAP集合

数据格式如下,写个对象吧你看看这个数据格式,真麻烦!写个List吧,也是一层一层的!所以决定用map来收取

{"noticeType": "UNIFORM_SUBSCRIPTION",

"notice": { "returnCode": "000000",

                "description": "&½",

                "orderId": "74f8ce8913d74969a725ef7c84f64b4b",

                "productContent": { "orderType": "1",

                                                "productId": "9020500020090429000894",

                                               "callNumber": "xxxxxxxxxxx",

                                               "productPkgId": "00",

                                               "contentId": "00",

                                               "productName": "7000100301"}}}

这是notice里面的数据的实体类

 

 

 

具体代码如下

 

    public static void main(String[] args) {
        
        String str="{\"noticeType\": \"UNIFORM_SUBSCRIPTION\"," + 
                " \"notice\": {" + 
                " \"returnCode\": \"000000\"," + 
                " \"description\": \"&½\"," + 
                " \"orderId\": \"74f8ce8913d74969a725ef7c84f64b4b\"," + 
                " \"productContent\": {" + 
                " \"orderType\": \"1\"," + 
                " \"productId\": \"9020500020090429000894\"," + 
                " \"callNumber\": \"xxxxxxxxxxx\"," + 
                " \"productPkgId\": \"00\"," + 
                " \"contentId\": \"00\"," + 
                " \"productName\": \"7000100301\"}}}";

        //打印json数据
        System.out.println(str);
        //打印结果为{"noticeType": "UNIFORM_SUBSCRIPTION", "notice": { "returnCode": "000000", "description": "&½", "orderId": "74f8ce8913d74969a725ef7c84f64b4b", "productContent": { "orderType": "1", "productId": "9020500020090429000894", "callNumber": "xxxxxxxxxxx", "productPkgId": "00", "contentId": "00", "productName": "7000100301"}}}
      
        
        
        
        //把json数据放到map里
        Map maps = (Map)JSON.parse(str);  
        //打印notice部分的value
        //打印结果为{"returnCode":"000000","orderId":"74f8ce8913d74969a725ef7c84f64b4b","productContent":{"orderType":"1","productId":"9020500020090429000894","callNumber":"xxxxxxxxxxx","contentId":"00","productPkgId":"00","productName":"7000100301"},"description":"&½"}
        System.out.println(maps.get("notice"));
        
        //取notice部分的json数据塞到实体里
        String str2=maps.get("notice").toString();
        CommitReceiveResult ls = JSONObject.parseObject(str2, CommitReceiveResult.class);
        //打印结果为xxxxxxxxxxx
        //74f8ce8913d74969a725ef7c84f64b4b
        System.out.println(ls.getProductContent().getCallNumber());
        System.out.println(ls.getOrderId());
        
        System.out.println("=======================");
        
        //这里用的是蠢办法,一段一段的去取值
        Map maps2 = (Map)JSON.parse(str2);
        System.out.println(maps2.get("productContent"));

        String str3=maps2.get("productContent").toString();

        Map maps3 = (Map)JSON.parse(str3);
        System.out.println(maps3.get("productId"));
      
        System.out.println("------------------------");
        
        //这个就是直接map嵌map,可以不用一段一段的去取,直接.get().get()就能取到相应的值
        
        Map<String,Map<String,Map<String,String>>> map=(Map)JSON.parse(str);
        System.out.println(map.get("notice").toString());
        System.out.println(map.get("notice").get("productContent"));
        System.out.println(map.get("notice").get("returnCode"));
        System.out.println(map.get("notice").get("productContent").get("orderType"));
        System.out.println(map.get("notice").get("productContent").get("productId"));

   
        
    }

 

如果大家有更好更快的方法欢迎大家指导,谢谢!

### Java 中将 JSON 字符串换为 Map 集合 在 Java 中,可以利用 `Gson` 库或 `Jackson` 库轻松地将 JSON 格式的字符串换为 `Map<String, Object>` 类型。以下是具体实现方式: #### 方法一:使用 Gson 库 首先需要引入依赖项(如果项目基于 Maven 构建),可以在 pom.xml 文件中加入如下配置[^2]。 对于 Gradle 用户,则应在 build.gradle 文件里添加对应的库支持。 接着通过以下代码片段完成换操作: ```java import com.google.gson.Gson; import java.util.Map; public class JsonToMapExample { public static void main(String[] args) { String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 创建 Gson 对象实例 Gson gson = new Gson(); // 将 JSON 字符串解析成 Map 结构 Map<String, Object> map = gson.fromJson(jsonString, Map.class); System.out.println(map); // 输出 {name=John, age=30.0, city=New York} } } ``` 此段代码展示了如何定义一个包含键值对形式的 JSON 字符串,并借助于 `gson.fromJson()` 函数将其映射至 Java 的 `Map<String, Object>` 数据结构之中。 #### 方法二:使用 Jackson 库 同样先确保已导入必要的 Jackson 库文件,之后可参照下列示范代码执行相同的功能: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.Map; public class JsonToMapWithJackson { public static void main(String[] args) throws IOException { String jsonString = "{\"name\":\"Jane\", \"age\":28, \"city\":\"Los Angeles\"}"; ObjectMapper objectMapper = new ObjectMapper(); // 解析 JSONMap Map<String, Object> map = objectMapper.readValue(jsonString, Map.class); System.out.println(map); // 输出 {name=Jane, age=28, city=Los Angeles} } } ``` 这里采用的是 Jackson 提供的对象映射器 (`ObjectMapper`) 来处理 JSON 文本到 `Map<String, Object>` 的变过程[^1]。 这两种方案都提供了简单而有效的途径来进行从 JSON 字符串到 Map换工作,在不同场景下可以根据个人喜好或者团队技术栈的选择来决定使用哪一个工具包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值