您的位置:首页 > Web前端 > JavaScript

String类型的json体转换为json(json嵌套字符串json,嵌套字符串json数组等)转换并解析为需要的json格式

2014-09-05 15:28 645 查看
之前困惑的一个问题现在已研究清晰,所以拿出来跟大家分享下,以至于遇到此问题不会棘手,上例子:

例原JSON串如下

String data="{

    "monitorId": "88AA0D04328011E48B6B00059A3C7800",

    "method": "ModifyAsset",

    "assetId": "0203019f527b42fa952545e40f6e07b8",

    "objects": "[{\"OName\":\"dfd\",\"OID\":\"fd\",\"Interval\":\"12\",\"AlarmInfo\":[{\"AlarmLevel\":\"warning\",\"AlarmThreshold\":\"50\"},{\"AlarmLevel\":\"critical\",\"AlarmThreshold\":\"56\"},{\"AlarmLevel\":\"fatal\",\"AlarmThreshold\":\"77\"}],\"$$hashKey\":\"051\"}]",

    "id": 1,

    "params": "{\"AssetID\":\"0203019f527b42fa952545e40f6e07b8\",\"AssetIP\":\"192.168.0.4\",\"AssetName\":\"HP\",\"AssetPort\":161,\"GetMethod\":\"snmp\",\"GetParams\":{\"Community\":\"public\",\"Password\":\"w\",\"Username\":\"www\",\"Version\":\"2.0\"}}",

    "jsonrpc": "2.0",

    "enabled": "t",

    "devicetypeId": "dcb0f7d4e3284487a7042fda06c8d1fd"

}"

1.首先转换整个data串

 JSONObject jo = new JSONObject(data);

2.将params后的String型的JSON串转换成JSON格式

 JSONObject jo1 = new JSONObject(jo.getString("params"));

3.转换String型的objects数组为JSON

 JSONArray ja = new JSONArray(jo.getString("objects"));

4.转换后封装

jo.put("objects",ja);

jo.put("params",jo1);

此时jo对象即为封装后的标准JSON体

补充:

1. 若要转换JSON体中字段的类型,如下,将String类型的AssetID转换成int型的

            String id=  jo1.getString("AssetID");

            int aid= Integer.parseInt(id);

            JSONObject member = new JSONObject();

            member.put("AssetID",aid);

            jo.put("AssetID",member);

2.要重组String类型数组的例子,把sJson字符串数组需要拆解并重组,放到原来str中。

        String isvalue = "2121212122";

        String str = "{\"jsonrpc\":\"2.0\",\"method\":\"AddAsset\",\"id\": \""

                + isvalue

                + "\",\"params\":{\"AssetID\": \""

                + isvalue

                + "\",\"AssetName\": \""

                + isvalue

                + "\",\"AssetIP\": \""

                + isvalue

                + "\",\"AssetPort\":161,\"GetMethod\":\"snmp\",\"GetParams\":{\"Community\":\"public\",\"Version\":\"1.0\",\"Username\":\"admin\",\"Password\":\"1\"}}}";

        String sJson = "[{'gwcxxid':'1','spsl':'2'},{'gwcxxid':'3','spsl':'4'},{'gwcxxid':'5','spsl':'6'}]";

        JSONArray jsonArray = new JSONArray(sJson);

        System.out.println(jsonArray);

        JSONObject jj = new JSONObject(str);

        int iSize = jsonArray.length();

        System.out.println("Size:" + iSize);

        jj.put("objects", jsonArray);

        for (int i = 0; i < iSize; i++) {

            JSONObject jsonObj = jsonArray.getJSONObject(i);

            //此处从数组中得到的字段可进行重组。譬如字段类型的转换等等

            int a = Integer.parseInt((String) jsonObj.get("gwcxxid"));

            jsonObj.put("gwcxxid", a);

            jsonObj.put("spsl", jsonObj.get("spsl"));

            jj.put("objects", jsonArray);

        }

        System.out.println("循环外" + jj.toString());

    }

总结:无论如何转换,只是JSON的嵌套关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串 json 解析 组装
相关文章推荐