I know that JSON object is nothing but the String
.
My question is that I have a Map of Object and i want to convert it into Json format.
Example :
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.
I want to convert that list into
Json Format?
How I can achieve it? Because i want to send it over HttpClient... If not what is the other alternative way?
As per my knowledge there is Gson API
available, but I dont know how to use it and or in other efficient way.
Thank you
Not sure what the problem with Gson is. From the doc :
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
and
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
That object is (as the name suggests) made up of primitives. However Gson will trivially handle objects, collections of objects etc. Life gets a little more complex when using generics etc., but for your example above I would expect Gson to work with little trouble.
Using Gson to convert to Json using Gson at client side.
Sending String array.
String[] subscriberArray = new String[]{"eee", "bbb"};
Gson gson = new Gson();
String recipientInfoStringFormat = gson.toJson(subscriberArray);
Sending Array of User Defined Type.
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);
Using Gson at Server Side to read Data.
For Primitive Types.
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);
}
For User Defined Object
String recipientInfos = req.getParameter("recipientInfoStringFormat");
Gson gson = new Gson();
RecipientInfo[] ri = gson.fromJson(recipientInfos, RecipientInfo[].class);
You can use jackson also.
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();
}
and vice versa
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();
}
for using jackson add this dependency to your 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>
I got my Answer but Thank you for Your Responses.
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
for reverse
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
That's It.Thank you
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.