遇到一个 json 格式的数据 :
{
"result": {
"shop": {
"name": "ZARA",
"mall_name": "今天天气真好",
"normal": 215,
"shelf": 5
}
}
}
想把它转换成下面java 对象。下面是java对应的属性,这种json嵌套的格式,不会转,所以向大家求助来了
private String name;
private String mall_name;
private Integer normal;
private Integer shelf;
fastjson 你值得拥有:
import com.alibaba.fastjson.JSON;
public class App {
public static void main(String[] args) throws IOException {
String json = "{\"result\": {\"shop\": {\"name\": \"ZARA\",\"mall_name\": \"今天天气真好\",\"normal\": 215,\"shelf\": 5}}}";
Parsed parsed = JSON.parseObject(json, Parsed.class);
System.out.println(parsed);
// 输出: Parsed [result=Result [shop=Shop [name=ZARA, mall_name=今天天气真好, normal=215, shelf=5]]]
}
}
class Parsed {
private Result result;
public Result getResult() {
return result;
}
public void setResult(Result result) {
this.result = result;
}
@Override
public String toString() {
return "Parsed [result=" + result + "]";
}
}
class Result {
private Shop shop;
public Shop getShop() {
return shop;
}
public void setShop(Shop shop) {
this.shop = shop;
}
@Override
public String toString() {
return "Result [shop=" + shop + "]";
}
}
class Shop {
private String name;
private String mall_name;
private Integer normal;
private Integer shelf;
@Override
public String toString() {
return "Shop [name=" + name + ", mall_name=" + mall_name + ", normal=" + normal
+ ", shelf=" + shelf + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMall_name() {
return mall_name;
}
public void setMall_name(String mall_name) {
this.mall_name = mall_name;
}
public Integer getNormal() {
return normal;
}
public void setNormal(Integer normal) {
this.normal = normal;
}
public Integer getShelf() {
return shelf;
}
public void setShelf(Integer shelf) {
this.shelf = shelf;
}
}
可以试一试 json-simple 这个jar包 地址在这里
https://code.google.com/p/json-simple/
通过这个jar包,你可以对json数据进行解析,举个简单的例子
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
// 假设你有一个JSON string
String s = "{'name':'Zara', 'shelf':'5'}";
// 使用json-simple中的parser
JSONParser parser=new JSONParser();
JSONObject data = new JSONObject();
data = (JSONObject) parser.parse(s);
// 假设你还有个类:
public class Result{
private String name;
private String shelf;
public Result(JSONObject data){
name = (String) data.get("name");
shelf = (String) data.get("shelf");
}
}
更多的内容,读一读json-simple网站上的例子就好啦。如果被墙了,在网上搜搜看说不定别的地方也有介绍。
思路,写一个通用的类:
负责解析json字符串,
然后通过反射, 实例化数据到具体的java对象。
手机上的,代码就不敲了
推荐给你一个流行的,也是个人用着非常顺手的java断的json框架 - Jaskson
直接点上面的链接就可以查看官方教程,如果不想看英文的看这个,但是我感觉没官方的写的好。
以下是最简单的json->java的例子
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
User user = mapper.readValue(new File("user.json"), User.class);