https://github.com/google/gson
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sender</groupId> <artifactId>sender</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Sender</name> <description>EDM</description> <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6.2</version> <scope>compile</scope> </dependency> </dependencies> </project>
Example
package io.github.netkiller;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.*;
public class GsonTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Gson gson = new Gson();
String json = "{\"k1\":\"v1\",\"k2\":\"v2\"}";
Map<String, String> map = new HashMap<String, String>();
map = (Map<String, String>) gson.fromJson(json, map.getClass());
System.out.println(map.get("k1"));
}
}
多层 Map 剥离
Gson gson = new Gson();
String inf= "{\"0\":{\"id\":\"2\",\"category_id\":\"1\",\"title\":\"Test2\",\"author\":\"\",\"ctime\":\"2016-03-05 11:59:56\"},\"1\":{\"id\":\"1\",\"category_id\":\"1\",\"title\":\"Test1\",\"author\":\"\u6d4b\u8bd5\",\"ctime\":\"2016-03-05 11:57:30\"},\"pages\":{\"count\":2,\"first\":0,\"last\":0,\"before\":0,\"current\":0,\"next\":0,\"total\":0}}";
Map<String, Map> map = new HashMap<String, Map>();
map = (Map<String, Map>) gson.fromJson(inf, map.getClass());
System.out.println(map.get("1").get("title"));
System.out.println(map.get("pages").get("count"));
package cn.netkiller.gson;
import java.util.ArrayList;
import java.util.List;
public class Personal {
private int age = 30;
private String name = "neo";
private List<String> telphone = new ArrayList<String>() {
{
add("13113668890");
add("13322993040");
add("29812080");
}
};
// getter and setter methods
@Override
public String toString() {
return "Personal [age=" + age + ", name=" + name + ", telphone=" + telphone + "]";
}
}
package cn.netkiller.gson;
import com.google.gson.Gson;
public class GsonExampleToJson {
public static void main(String[] args) {
// TODO Auto-generated method stub
Personal obj = new Personal();
Gson gson = new Gson();
// convert java object to JSON format, and returned as JSON formatted string
String json = gson.toJson(obj);
System.out.println(json);
}
}
package cn.netkiller.gson;
import com.google.gson.Gson;
public class GsonExampleFromJson {
public static void main(String[] args) {
Personal obj = new Personal();
Gson gson = new Gson();
// convert the json string back to object
obj = gson.fromJson("{\"age\":30,\"name\":\"neo\",\"telphone\":[\"13113668890\",\"13322993040\",\"29812080\"]}", Personal.class);
System.out.println(obj);
}
}
package cn.netkiller.gson;
import java.util.Map.Entry;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
public class GsonJsonParser {
public static void main(String[] args) {
// TODO Auto-generated method stub
String jsonString = "{\"age\":30,\"name\":\"neo\",\"telphone\":[\"13113668890\",\"13322993040\",\"29812080\"],\"address\":{\"province\":\"Guangdong\",\"city\":\"Shenzhen\"}}";
JsonElement root = new JsonParser().parse(jsonString);
System.out.println(root.toString());
System.out.println(root.getAsJsonObject().get("age").getAsInt());
System.out.println(root.getAsJsonObject().get("name").getAsString());
// Get the content of the first map
JsonArray jsonArray = root.getAsJsonObject().get("telphone").getAsJsonArray();
for (JsonElement tel : jsonArray) {
System.out.println(tel);
}
JsonObject object = root.getAsJsonObject().get("address").getAsJsonObject();
for (Entry<String, JsonElement> entry : object.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}