我无法格式化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
构造函数中。但我无法这样做。任何人都可以帮助我。
答案 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。平衡