首页 > json 格式的数据,转换成java对象

json 格式的数据,转换成java对象

遇到一个 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);
【热门文章】
【热门文章】