2013-08-07 108 views
4

我知道JSON对象只不过是String将Java对象转换为Json,反之亦然?

我的问题是我有一个对象的地图,我想将它转换成Json格式。

例子:

Java Class -> 
Class Person{ 
    private String name; 
    private String password; 
    private int number; 
} 

Java list -> 
Map<List<Long>,List<Person>> map=new HashMap<List<Long>,List<Person>>(); 
..and map has Some data filled in it. 

我想这个列表转换成

Json Format? 

我怎样才能实现呢?因为我想通过HttpClient发送它... 如果不是什么其他的替代方式?

据我所知,有​​3210可用,但我不知道如何使用它和或以其他有效的方式。

谢谢

回答

1

我有我的答案,但谢谢您的答复。

Map<Long,List<Person>> map=new HashMap<Long,List<Person>>(); 
    //adding some data 

Gson gson=new Gson(); 
String mapJsonStr=gson.toJson(map); 

//mapJsonStr : is my map's JSon Strin 

反向

TypeToken<Map<Long,List<Person>>> token = new TypeToken<Map<Long,List<Person>>>(){}; 
    Map<Long,List<Person>> map_new=new HashMap<Long,List<Person>>(); 
    map_new=gson.fromJson(mapJsonStr,token.getType()); 

    //origian map 
// map_new is my Map get from map's Json String 

这是It.Thank你

+0

很高兴它的工作。您应该将答案标记为“已接受” –

+1

请参阅此链接 - http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/ –

4

不知道有GSON的问题是什么。从the doc

BagOfPrimitives obj = new BagOfPrimitives(); 
Gson gson = new Gson(); 
String json = gson.toJson(obj); 

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 

该对象(顾名思义)由基元。不过,Gson会平淡地处理对象,对象的集合等。当使用泛型等时,生活会变得更加复杂一些,但对于上面的示例,我希望Gson能够轻松工作。

+0

如果什么有非原始类型? –

+1

@HarshadDeshmukh Gson也会解析它们,除非有自我引用,并且会导致无限的json – JosephChilberry

3

使用Gson在客户端使用Gson转换为Json。

发送字符串数组。

String[] subscriberArray = new String[]{"eee", "bbb"}; 
    Gson gson = new Gson(); 
    String recipientInfoStringFormat = gson.toJson(subscriberArray);  

正在发送用户定义类型的数组。

 RecipientInfo[] recipientInfos = new RecipientInfo[1]; 

     RecipientInfo ri = new RecipientInfo(); 
     ri.setA(1); 
     ri.setB("ss"); 

     recipientInfos.add(ri); 

     Gson gson = new Gson(); 
     String recipientInfoStringFormat = gson.toJson(recipientInfos);  

在服务器端使用Gson来读取数据。

对于原始类型。

  String subscriberArrayParam = req.getParameter("subscriberArrayParam"); 
    Gson gson = new Gson(); 
    String[] subscriberArray = gson.fromJson(subscriberArrayParam, String[].class);  
    for (String str : subscriberArray) { 
     System.out.println("qq :"+str); 
    } 

用户自定义对象

String recipientInfos = req.getParameter("recipientInfoStringFormat"); 

    Gson gson = new Gson(); 
    RecipientInfo[] ri = gson.fromJson(recipientInfos, RecipientInfo[].class); 
1

可以使用杰克逊也。

Person person= new Person(); 
ObjectMapper mapper = new ObjectMapper(); 

try { 

    // convert personobject to json string, and save to a file 
    mapper.writeValue(new File("c:\\person.json"), person); 

    // display to console 
    System.out.println(mapper.writeValueAsString(person)); 

} catch (Exception e) { 

    e.printStackTrace(); 

} 

,反之亦然

ObjectMapper mapper = new ObjectMapper(); 

try { 

    // read from file, convert it to user class 
    Person person= mapper.readValue(new File("c:\\person.json"), Person.class); 

    // display to console 
    System.out.println(person); 

} catch (Exception e) { 

    e.printStackTrace(); 

} 

使用杰克逊加入这个依赖于你的pom.xml

<repositories> 
<repository> 
    <id>codehaus</id> 
    <url>http://repository.codehaus.org/org/codehaus</url> 
</repository> 
</repositories> 

<dependencies> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.8.5</version> 
</dependency> 
</dependencies> 
+0

杰克逊是否在客户端。? –

相关问题