21xrx.com
2024-09-20 06:05:15 Friday
登录
文章检索 我的文章 写文章
如何在Java中将JSON数据存储到Map集合并层层取出
2023-06-16 20:24:59 深夜i     --     --
Java

在Java编程中,JSON(JavaScript Object Notation)已成为一种常用的数据格式。使用JSON格式管理数据,能够轻松地组织和传输数据。在处理JSON数据时,将其转换为Map集合是一种常用的方法。在这篇文章中,我们将介绍如何在Java中将JSON数据存储到Map集合中,并演示如何逐层取出。

首先,我们需要使用Json库来处理JSON数据。GSON和Jackson都是流行的JSON库,本文将使用GSON库。 使用GSON库可以将JSON字符串解析为Java对象,或将Java对象转换为JSON字符串。

接下来,我们需要创建一个JSON字符串并将其解析为Java对象。下面是一个示例JSON字符串:

json

{

  "person": {

   "name": "张三",

   "age": 25,

   "address":

     "province": "北京市"

   ,

   "phoneNumbers": [

     "123456789",

     "987654321"

   ]

  }

}

现在,我们需要在Java中将此JSON字符串转换为Map集合。我们可以使用GSON库中的fromJson()方法:


import com.google.gson.Gson;

import java.util.Map;

public class JsonToMapExample {

  public static void main(String[] args) {

   String jsonString = "{\r\n" +

        "  \"person\": {\r\n" +

        "   \"name\": \"张三\",\r\n" +

        "   \"age\": 25,\r\n" +

        "   \"address\": {\r\n" +

        "     \"city\": \"北京\",\r\n" +

        "     \"province\": \"北京市\"\r\n" +

        "   }, \r\n" +

        "   \"phoneNumbers\": [\r\n" +

        "     \"123456789\",\r\n" +

        "     \"987654321\"\r\n" +

        "   ]\r\n" +

        "  }\r\n" +

        "}";

   Gson gson = new Gson();

   Map map = gson.fromJson(jsonString, Map.class);

   // 将Map打印出来

   System.out.println(map);

  }

}

运行程序,我们可以得到以下输出:


{person={name=张三, age=25, phoneNumbers=[123456789, 987654321], address=province=北京市}}

现在,我们已经将JSON字符串存储到Map集合中。接下来,我们可以使用嵌套Map的方式按照键名逐层获取属性值。下面是一个简单的示例程序:


public class MapExample {

  public static void main(String[] args) {

   Map map = new HashMap ();

   map.put("name", "张三");

   map.put("age", 25);

   map.put("address", new HashMap () {{

        put("city", "北京");

        put("province", "北京市");

   }});

   map.put("phoneNumbers", new ArrayList () {{

        add("123456789");

        add("987654321");

   }});

   // get name

   String name = (String) map.get("name");

   System.out.println("Name: " + name);

   // get age

   int age = (int) map.get("age");

   System.out.println("Age: " + age);

   // get address

   Map address = (Map ) map.get("address");

   String city = (String) address.get("city");

   String province = (String) address.get("province");

   System.out.println("City: " + city + ", Province: " + province);

   // get phoneNumbers

   List phoneNumbers = (List ) map.get("phoneNumbers");

   for (String phoneNumber : phoneNumbers) {

     System.out.println("Phone number: " + phoneNumber);

   }

  }

}

此程序将创建一个嵌套Map集合,并获取其中的属性值。运行程序,我们可以得到以下输出:


Name: 张三

Age: 25

City: 北京, Province: 北京市

Phone number: 123456789

Phone number: 987654321

JSON、 Map集合、 取值、 嵌套Map。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复