0

I have a string buffer (Payload) as follows :

"SQN":922,"Node_ID":"cc000000000000000000000000000002","Energy":"5.00","Power":"1.80","Sign":"6d226becaf5a5b..."

And now I want to customize it as follows :

String part_1 = "{9 spaces}922{3 spaces}5.00{3 spaces}1.80"
String part_2 = "6d226becaf5a5b..."

What is the best solution to do this ?

I tried this one as user Martin P proposed :

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);

However, getAsJsonObject() and jsonObjectToString(obj, "SQN") are undefined.

Questioner
  • 662
  • 1
  • 10
  • 26

1 Answers1

1

Looks like you could parse it as Json.

I used Gson to do this. Here's the link to maven: Gson maven

Be aware that I wrapped your string in curly brackets ( { } ) to parse it as json later on

Sample code:

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();
}

Result output:

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

6d226becaf5a5b...

Community
  • 1
  • 1
Martin P
  • 114
  • 4
  • Thanks. since i get an error for JsonObject, do you now related jar file to download ? – Questioner Apr 23 '18 at 12:10
  • could you edit your original post and provide more details like code snippet and error message? – Martin P Apr 23 '18 at 12:33
  • you're trying to use my code which I wrote using Gson library while importing org.json library. You can't do that. Either change your code to be compatible with org.json implementation or use Gson library instead. – Martin P Apr 23 '18 at 12:51
  • How about jsonObjectToString ? It is not still recognized as a method. I imported import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; – Questioner Apr 23 '18 at 12:58
  • Look at my code snippet, it is a method that I provided myself – Martin P Apr 23 '18 at 13:05