通过 JSON 解析器拆分和自定义 Java 中的字符串缓冲区?

spliting and customizing a string buffer in Java by JSON parser?

我有一个字符串缓冲区(有效负载)如下:

"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。

我用 Gson 来做这个。这是 Maven 的 link:Gson maven

请注意,我将您的字符串括在大括号 ( { } ) 中以便稍后将其解析为 json

示例代码:

String input = "{\"SQN\":922,\"Node_ID\":\"cc000000000000000000000000000002\",\"Energy\":\"5.00\",\"Power\":\"1.80\",\"Sign\":\"6d226becaf5a5b...\"}";

    JsonObject obj = 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 you need}").append(sqnString).append("{whatever you need here}").append(energyString).append("{something else}").append(powerString);
    String part_1 = sb.toString();
    String part_2 = signString;

    System.out.println(part_1);
    System.out.println(part_2);
}

private static String jsonObjectToString(JsonObject obj, String name) {
    return obj.getAsJsonPrimitive(name).getAsString();
}

结果输出:

{whatever you need}922{whatever you need here}5.00{something else}1.80

6d226becaf5a5b...