android json原生解析





//json格式的字符串{}转换成java对象
private void jsonToJavaObjectByNative() {
    //获取或者创建json数据
    String json = "{\n" +
            "\t\"id\":2,\"name\":\"大虾\",\n"+
            "\t\"price\":12.3,\n"+
            "\t\"imagePath\":\"http://192.168.0.1:8080/yht.jpg\"\n"+
            "}\n";
    //解析json
    try {
        JSONObject jsonObject = new JSONObject(json);
        int id = jsonObject.getInt("id");
        int id1 = jsonObject.optInt("id");

        String name = jsonObject.optString("name");
        double price = jsonObject.optDouble("price");
        String imagePath = jsonObject.optString("imagePath");

        shopInfo = new ShopInfo(id,name,price,imagePath);

    } catch (JSONException e) {
        e.printStackTrace();
    }

    //显示数据
    tv_native_orignal.setText(json);
    tv_native_last.setText(shopInfo.toString());
}


List<ShopInfo> shopInfos = new ArrayList<>();
//json格式的字符串[] 转换为java对象的List
private void jsonToJavaListByNative() {
    //获取或者创建json数据
    String json = "[\n" +
            "\t{\n" +
            "\t\t\"id\":1,\n" +
            "\t\t\"imagePath\":\"http://192.168.0.1:8080/test/f1.jpg\",\n" +
            "\t\t\"name\":\"袁合涛1\",\n" +
            "\t\t\"price\":\"12.3\"\n" +
            "\t},\n" +
            "\t{\n" +
            "\t\t\"id\":2,\n" +
            "\t\t\"imagePath\":\"http://192.168.0.1:8080/test/f2.jpg\",\n" +
            "\t\t\"name\":\"袁合涛2\",\n" +
            "\t\t\"price\":\"12.5\"\n" +
            "\t}\n" +
            "]";

    //解析json数据
    try {
        JSONArray jsonArray = new JSONArray(json);
        for(int i = 0;i < jsonArray.length();i++){
           JSONObject jsonObject = jsonArray.getJSONObject(i);
            if(null != jsonObject){
                int id = jsonObject.getInt("id");
                String name = jsonObject.optString("name");
                double price = jsonObject.optDouble("price");
                String imagePath = jsonObject.optString("imagePath");

                ShopInfo shopInfo = new ShopInfo(id,name,price,imagePath);
                shopInfos.add(shopInfo);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

    //显示json
    tv_native_orignal.setText(json);
    tv_native_last.setText(shopInfos.toString());
}


解析复杂的json数据,需要一层一层的进行解析。

   JSONObject jsonObject = new JSONObject(json);

        //第一层解析
        JSONObject data = jsonObject.optJSONObject("data");
        String  retcode = jsonObject.optString("retcode");

        //第二次解析
        String countcommenturl = data.optString("countcommenturl");
        String more = data.optString("more");
        JSONArray news = data.optJSONArray("news");

        //第三次解析
        for(int i = 0;i<news.length();i++){
            JSONObject jsonObject1 = news.optJSONObject(i);
            if(null != jsonObject1){
                int id = jsonObject1.optInt("id");
                String title = jsonObject1.optString("title");
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

}



//json格式的字符串{}转换为java对象
private void jsonToJavaObjectByGson() {
    //获取或创建json数据
    String json = "{\n" +
            "    \"id\": 1,\n" +
            "    \"imagePath\": \"http://192.168.0.1:8080/test/f1.jpg\",\n" +
            "    \"name\": \"袁合涛1\",\n" +
            "    \"price\": \"12.3\"\n" +
            "}";
    //开始解析
    Gson gson = new Gson();
    ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
    //显示json数据
    tv_gson_orignal.setText(json);
    tv_gson_last.setText(shopInfo.toString());
}


//json格式的字符串[]转换为java对象的List
private void jsonToJavaListByGson() {
    //创建或获取json数据
    String json  = "[\n" +
            "    {\n" +
            "        \"id\": 1,\n" +
            "        \"imagePath\": \"http://192.168.0.1:8080/test/f1.jpg\",\n" +
            "        \"name\": \"袁合涛1\",\n" +
            "        \"price\": \"12.3\"\n" +
            "    },\n" +
            "    {\n" +
            "        \"id\": 2,\n" +
            "        \"imagePath\": \"http://192.168.0.1:8080/test/f2.jpg\",\n" +
            "        \"name\": \"袁合涛2\",\n" +
            "        \"price\": \"12.5\"\n" +
            "    }\n" +
            "]";
    //解析json数据
        Gson gson = new Gson();
    List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {
    }.getType());

    //数据展示
    tv_gson_orignal.setText(json);
    tv_gson_last.setText(shops.toString());
}

//java对象转换为json字符串[]
private void javaToJsonArrayByGson() {
    //获取或创建java对象
    List<ShopInfo> shops = new ArrayList<>();
    ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.3, "baoyu");
    ShopInfo longixa = new ShopInfo(1, "龙虾", 251.3, "longixa");
    shops.add(baoyu);
    shops.add(longixa);
    //生成json数据
    Gson gson = new Gson();
    String json = gson.toJson(shops);

    //展示数据
    tv_gson_orignal.setText(shops.toString());
    tv_gson_last.setText(json);
}

//java对象转换为json字符串{}
private void javaToGsonObjectByGson() {
    //获取或创建java对象
    ShopInfo shopInfo = new ShopInfo(1,"鲍鱼",250.2,"baoyu");
    //生成json数据
    Gson gson = new Gson();
    String json = gson.toJson(shopInfo);

    //展示数据
    tv_gson_orignal.setText(shopInfo.toString());
    tv_gson_last.setText(json);
}

FastJson

//json格式的字符串{}转换为java对象
private void jsonToJavaObjectByFastJson() {
    //获取或创建json数据
    String json = "{\n" +
            "    \"id\": 1,\n" +
            "    \"imagePath\": \"http://192.168.0.1:8080/test/f1.jpg\",\n" +
            "    \"name\": \"袁合涛1\",\n" +
            "    \"price\": \"12.3\"\n" +
            "}";
    //解析json数据
    ShopInfo shopInfo = JSON.parseObject(json,ShopInfo.class);

    //显示数据
    tv_fastjson_orignal.setText(json);
    tv_fastjson_last.setText(shopInfo.toString());
}
//json格式的字符串[]转换为java对象的List
private void jsonToJavaListByFastJson() {
    //创建或获取json数据
    String json  = "[\n" +
            "    {\n" +
            "        \"id\": 1,\n" +
            "        \"imagePath\": \"http://192.168.0.1:8080/test/f1.jpg\",\n" +
            "        \"name\": \"袁合涛1\",\n" +
            "        \"price\": \"12.3\"\n" +
            "    },\n" +
            "    {\n" +
            "        \"id\": 2,\n" +
            "        \"imagePath\": \"http://192.168.0.1:8080/test/f2.jpg\",\n" +
            "        \"name\": \"袁合涛2\",\n" +
            "        \"price\": \"12.5\"\n" +
            "    }\n" +
            "]";
    //解析JSon数据
    List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);
    //显示数据
    tv_fastjson_orignal.setText(json);
    tv_fastjson_last.setText(shopInfos.toString());
}

//java对象转换为json字符串[]
private void javaToJsonArrayByFastJson() {
    //创建一个java集合
    List<ShopInfo> shops = new ArrayList<>();
    ShopInfo yht = new ShopInfo(1, "yht", 25.3, "jj");
    ShopInfo yyy = new ShopInfo(2, "yyy", 25.3, "yyyyy");
    shops.add(yht);
    shops.add(yyy);
    //生成json数据
    String jsonString = JSON.toJSONString(shops);
    //展示数据
    tv_fastjson_orignal.setText(shops.toString());
    tv_fastjson_last.setText(jsonString);
}

//java对象转换为json字符串{}
private void javaToJsonObectByFastJson() {
    //创建一个java对象
    ShopInfo shopInfo = new ShopInfo(1,"合涛",320.2,"hetao");
    //java转换为json
    String json = JSON.toJSONString(shopInfo);
    //显示数据
    tv_fastjson_orignal.setText(shopInfo.toString());
    tv_fastjson_last.setText(json);
}

猜你喜欢

转载自blog.csdn.net/sinat_26397681/article/details/52891668
今日推荐