2016-10-19 113 views
0

我试图解析JSON,其格式如下:JSON解析到Java 2-d阵列

{"user_name":"","zip_code":null} 
{"user_name":"","zip_code":null} 
{"user_name":"","zip_code":null} 
{"user_name":"","zip_code":null} 

它显示用户在某个数据库的数量。但是,用户数量未知。

我想什么做的是为每个用户分配和他们在2 d阵列

String[][] users = new String[USER_AMOUNT][2]; 

(2 user_name和ZIP_CODE)

数据,各自为阵有什么办法用给定的JSON格式来做到这一点?

+1

的可能的复制[如何解析Java中的JSON(http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –

+0

使用Jackson或GSON – HARDI

+0

简要回答,不要使用2D或任何多维数组。创建一个“用户”类。然后在Java中存储'用户[]' –

回答

0

是的,有一种方法,你可以使用Gson库来实现相同。

首先定义一个POJO(Plain Old Java Object),它的字段与Json的字段相同。

public class User { 

    private String user_name; 
    private String zip_code; 

    public String getZip_code() { 
     return zip_code; 
    } 

    public void setZip_code(String zip_code) { 
     this.zip_code = zip_code; 
    } 

    public String getUser_name() { 
     return user_name; 
    } 

    public void setUser_name(String user_name) { 
     this.user_name = user_name; 
    } 
} 

,然后写驱动程序类:

import com.google.gson.Gson; 

public class JsonToJavaObjMapper { 

    public static void main(String[] args) { 
     String jsonString = "{\"user_name\":\"Azim\",\"zip_code\":null}"; 
     Gson gson = new Gson(); 
     User fromJson = gson.fromJson(jsonString, User.class); 
     System.out.println(fromJson.getUser_name() + " " + fromJson.getZip_code()); 
    } 
} 

附上GSON罐子到类路径中并运行上述类。

输出:

Azim null 

也许这段代码将是有益的给你。

+0

'zipCode'和'userName'是更传统的名称。你可以使用注释来修复POJO映射 –

+0

是的,我同意你的观点,但是故意没有添加注释来使答案更容易理解,以供新手:) – Azim

+0

非常感谢! – Payton

0

如果你真的想要String [] []用户回来,你需要使用序列化器或反序列化器来实现它。我用Oson library做到这一点:

 String jsonString = "[{\"user_name\":\"Azim\",\"zip_code\":67890},{\"user_name\":\"Smith\",\"zip_code\":12345}]"; 

     String[][] users = oson.des(String[].class, (Object p) -> StringUtil.list2Array(((Map)p).values())) 
       .deserialize(jsonString, String[][].class); 

     String json = oson.serialize(users); 
     String expected = "[[\"Azim\",\"67890\"],[\"Smith\",\"12345\"]]"; 
     assertEquals(expected, json);