21xrx.com
2025-07-13 02:55:33 Sunday
登录
文章检索 我的文章 写文章
如何在Java中将JSON数据存储到Map集合并层层取出
2023-06-16 20:24:59 深夜i     29     0
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。

  
  

评论区