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

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

例原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的嵌套关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值