JSON 解析之 FastJson

1_FastJson 框架技术
1)特点:Fastjson 是一个 Java 语言编写的高性能功能完善的 JSON 库。它采用一种“假定有 序快速匹配”的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。


2)下载地址:https://github.com/alibaba/fastjson/wiki

1.1_将 json 格式的字符串{}转换为 Java 对象

1)用到的 API < T > T parseObject(String json, Class<T> classOfT); //将 json 对象转换为 Java 对象的方法 注意:要求 json 对象中的 key 的名称与 java 对象对应的类中的属性名要相同

2)使用步骤

(1)导入 fastjson 的 jar 包

(2)JSON调用parseObject()方法,获取转换后的Java对象 例如:ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);

3)测试数据 

{
    "id":2,
    "name":"大虾",
    "price":12.3,
    "imagePath":"http://192.168.10.165:8080/L05_Server/images/f1.jpg"
}

4)例子

  // (1)将json格式的字符串{}转换为Java对象 
    private void jsonToJavaObjectByFastJson() {

        // 1 获取或创建 JSON数据
        String json = "{\n" + "\t\"id\":2, \"name\":\"大虾\", \n"
                + "\t\"price\":12.3, \n" + "\t\"imagePath\":\"http://192.168.10.165:8080/L05_Server/images/f1.jpg\"\n" + "}\n";

        // 2 解析 JSON数据
        ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);

        // 3 显示数据     
        tv_fastjson_orignal.setText(json);
        tv_fastjson_last.setText(shopInfo.toString());
    }

1.2_将 json 格式的字符串[]转换为 Java 对象的 List
1)用到的 API List<T> parseArray(String json,Class<T> classOfT);//将 json 数组转换为 Java 对 象的 list 注意:要求 json 对象中的 key 的名称与 java 对象对应的类中的属性名要相同

2)使用步骤

(1)导入 fastjson 的 jar 包

(2)JSON调用parseArray()方法,获取转换后的Java集合

   例如:List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);

3)测试数据 

[
    {
        "id":1,
        "imagePath":"http://192.168.10.165:8080/f1.jpg",
        "name":"大虾1",
        "price":12.3
    },
    {
        "id":2,
        "imagePath":"http://192.168.10.165:8080/f2.jpg",
        "name":"大虾2",
        "price":12.5
    }
]

4)例子

  // ( 2 )将 json格式的字符串 [] 转换为 Java对象的 List 
    private void jsonToJavaListByFastJson() {

        // 1 获取或创建 JSON数据
        String json = "[\n" + "{\n" + "\"id\": 1,\n" + "\"imagePath\": \"http://192.168.10.165:8080/f1.jpg\",\n" 
                + "\"name\": \"大虾 1\",\n" + "\"price\": 12.3\n" + "},\n" + "    {\n" + "        \"id\": 2,\n" 
                + "\"imagePath\": \"http://192.168.10.165:8080/f2.jpg\",\n" 
                + "\"name\": \"大虾 2\",\n" + "\"price\": 12.5\n" + "}\n" + "]";

        // 2 解析 JSON数据
        List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);

        // 3 显示数据     
        tv_fastjson_orignal.setText(json);
        tv_fastjson_last.setText(shopInfos.toString());
    }

1.3_将 Java 对象转换为 json 字符串{}
1)用到的 API String toJSONString(Object object);

2)使用步骤

(1)导入 fastjson 的 jar 包

(2)JSON调用toJSONString()方法,获取转换后的json数据 例如:

  ShopInfo shopInfo = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");

  String json = JSON.toJSONString(shopInfo);

3)例子

 // ( 3 )将 Java对象转换为 json字符串 {} 
    private void javaToJsonObjectByFastJson() {

        // 1 获取 Java对象
        ShopInfo shopInfo = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");

        // 2 生成 JSON数据
        String json = JSON.toJSONString(shopInfo);

        // 3 数据显示    
        tv_fastjson_orignal.setText(shopInfo.toString());
        tv_fastjson_last.setText(json);
    }

1.4_将 Java 对象的 List 转换为 json 字符串[]
1)用到的 API String toJSONString(Object object);

2)使用步骤

(1)导入 fastjson 的 jar 包

(2)JSON调用toJSONString()方法,获取转换后的json数据 例如:

  List<ShopInfo> shops = new ArrayList<>();

  ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");

  ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia");

  shops.add(baoyu); shops.add(longxia);

  String json = JSON.toJSONString(shops);

3)例子 

 // ( 4 )将 Java对象的 List转换为 json字符串 []
    private void javaToJsonArrayByFastJson() {
        // 1 获取 Java集合
        List<ShopInfo> shops = new ArrayList<>();
        ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");
        ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia");
        shops.add(baoyu);
        shops.add(longxia);

        // 2 生成 JSON数据
        String json = JSON.toJSONString(shops);

        // 3 数据显示     
        tv_fastjson_orignal.setText(shops.toString());
        tv_fastjson_last.setText(json);
    }

猜你喜欢

转载自www.cnblogs.com/yanglanwan/p/11295677.html