不能在使用java的字符串中包含双引号

时间:2018-03-12 11:08:38

标签: java json

我无法格式化String值以用作JSONObject。在使用客户端API后,我得到了以下响应:

{
 "apiKey": "537563615208489705083657373",
 "data": "{\"Apparent Power kVA\":14.4,\"Grid Duration\":7990260,\"Grid MD kW\":0.59,\"Grid MD kVA\":0.59,\"Voltage\":240,\"Device Sr.No.\":\"SMR01-4417-0002\",\"Frequency\":49.94,\"Remaining Balance\":2737.35,\"Load Relay Status\":\"Connected\",\"Timestamp\":\"2018-02-26 18:31:18\",\"Current\":60,\"Active Power kW\":14.4}"
}

我把它放在我的String文字中。但正如您所看到的,响应具有空格键。它还有反斜杠(\)。

所以我使用下面的代码来克服这个问题:

        abc= abc.replaceAll("\\\\", "");
        abc=abc.replaceAll("\"", "");
        abc=abc.replaceAll(" ", "");

现在我的输出低于abc

{
apiKey:537563615208489705083657373,
data:{ApparentPowerkVA:14.4,GridDuration:7990260,GridMDkW:0.59,GridMDkVA:0.59,Voltage:240,DeviceSr.No.:SMR01-4417-0002,Frequency:49.94,RemainingBalance:2737.35,LoadRelayStatus:Connected,Timestamp:2018-02-2618:31:18,Current:60,ActivePowerkW:14.4}
}

我成功删除了所有无意义的字符。但我需要双引号才能将abc置于org.JSONObject构造函数中。但我无法这样做。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

属性数据中的String绝对可以解释为Java String。使用以下代码:

String data = "{\"Apparent Power kVA\":14.4, ..."; JSONObject obj = new JSONObject(data);

我得到了这个输出:

{ "Apparent Power kVA": 14.4, "Grid Duration": 7990260, "Grid MD kW": 0.59, "Grid MD kVA": 0.59, "Voltage": 240, "Device Sr.No.": "SMR01-4417-0002", "Frequency": 49.94, "Remaining Balance": 2737.35, "Load Relay Status": "Connected", "Timestamp": "2018-02-26 18:31:18", "Current": 60, "Active Power kW": 14.4 }

使用JSON Java v20180130

进行测试

答案 1 :(得分:0)

@O.O. Balance抓住了我的错误时,我创建了一个成功创建org.JSONObject的后续方法并将其作为String返回。

private static String getCorrectFormat(String original) throws JSONException {
        original= original.replaceAll("\\\\", "");
        original=original.replaceAll("\\\"", "\"");
        original=original.replaceAll(" ", "");

        original=original.replace("\"data\":\"", "\"data\":");
        original = original.replace("}\"", "}");
        JSONObject obj = new JSONObject(original);
        return obj.toString();
    }

谢谢@ O.O。平衡