【发布时间】:2018-04-23 10:39:11
【问题描述】:
我有一个字符串缓冲区(有效负载)如下:
"SQN":922,"Node_ID":"cc000000000000000000000000000002","Energy":"5.00","Power":"1.80","Sign":"6d226becaf5a5b..."
现在我想自定义如下:
String part_1 = "{9 spaces}922{3 spaces}5.00{3 spaces}1.80"
String part_2 = "6d226becaf5a5b..."
最好的解决方案是什么?
我按照用户 Martin P 的建议尝试了这个:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.json.JSONArray.*;
import org.json.JSONException;
import org.json.JSONObject.*;
import org.json.JSONString;
String input = "{\"SQN\":922,\"Node_ID\":\"cc000000000000000000000000000002\",\"Energy\":\"5.00\",\"Power\":\"1.80\",\"Sign\":\"6d226becaf5a5b...\"}";
JSONParser obj = ((Object) new JSONParser().parse(input)).getAsJsonObject();
String sqnString = jsonObjectToString(obj, "SQN");
String energyString = jsonObjectToString(obj, "Energy");
String powerString = jsonObjectToString(obj, "Power");
String signString = jsonObjectToString(obj, "Sign");
StringBuilder sb = new StringBuilder();
sb.append("{whatever we need}").append(sqnString).append("{whatever we need}").append(energyString).append("{whatever we need}").append(powerString);
String part_1 = sb.toString();
String part_2 = signString;
System.out.println(part_1);
System.out.println(part_2);
但是,getAsJsonObject() 和 jsonObjectToString(obj, "SQN") 是未定义的。
【问题讨论】:
-
看起来你需要一个
JSON解析器 -
@XtremeBaumer 谢谢。你能再解释一下吗?
-
您使用 json 解析器来解析您的字符串并将其映射到 POJO。那么您可以更轻松地访问所有部分
-
@XtremeBaumer 因为我不熟悉 JSON 解析器,请您回答一下好吗?如果可能并且不难,谢谢
-
@sas 请参阅stackoverflow.com/questions/2591098/how-to-parse-json-in-java。 Gson 和 Jackson 是最常用的。
标签: java json string split buffer