GSON - удалить данные JSON из объекта JSON - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь удалить часть объекта JSON, на данный момент мне кажется, что я могу только вернуть весь объект.

Формат JSON:

{"blobJson":"{\"sensorID\":\"111122\",\"width\":32,\"height\":31,\"frameData\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}","deviceMfg":2,"eventCode":101,"sensorClass":1,"sensorUUID":"111122","timeStamp":1.53907307310099994E18,"uID":"111122_1_2"}

I 'Я хочу удалить [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] часть JSON.

В настоящее время я использую следующий код:

    JsonParser jp = new JsonParser(); //from gson
    JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); 
    JsonObject rootobj = root.getAsJsonObject();
    System.out.println(rootobj);

Это выводит следующий JSON:

{"blobJson":"","deviceMfg":-1,"eventCode":-1,"sensorClass":-1,"sensorUUID":"","timeStamp":0.0,"uID":"_-1_-1"}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если вы хотите удалить framedata key and value из строки.Вы можете использовать org.json.JSONObject, как показано ниже:

JSONObject jo1 = new JSONObject("{\"blobJson\":{\"sensorID\":\"111122\",\"width\":32,\"height\":31,\"frameData\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\"deviceMfg\":2,\"eventCode\":101,\"sensorClass\":1,\"sensorUUID\":\"111122\",\"timeStamp\":1.53907307310099994E18,\"uID\":\"111122_1_2\"}");
jo1.getJSONObject("blobJson").remove("frameData");

Если вы хотите сохранить key framedata, но хотите заменить только value на [], выполните следующие действия:

JSONObject jo1 = new JSONObject("{\"blobJson\":{\"sensorID\":\"111122\",\"width\":32,\"height\":31,\"frameData\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\"deviceMfg\":2,\"eventCode\":101,\"sensorClass\":1,\"sensorUUID\":\"111122\",\"timeStamp\":1.53907307310099994E18,\"uID\":\"111122_1_2\"}");
jo1.getJSONObject("blobJson").put("frameData", "[]");

Вы можете использовать ObjectMapper из com.fasterxml.jackson.databind, но затем вам потребуется соответствующий класс со всеми переменными-членами, соответствующими ключам json.В приведенном выше подходе вы можете напрямую манипулировать строкой Json.

0 голосов
/ 09 октября 2018
String stringifyRequest="{"blobJson":"{\"sensorID\":\"111122\",\"width\":32,\"height\":31,\"frameData\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}","deviceMfg":2,"eventCode":101,"sensorClass":1,"sensorUUID":"111122","timeStamp":1.53907307310099994E18,"uID":"111122_1_2"}";

 final ObjectMapper mapper = new ObjectMapper();
        "Yourpojoclass" investmentResponse = mapper.readValue(stringifyRequest, "Yourpojoclass".class);

здесь "Yourpojoclass" будет вашим классом, состоящим из параметра строкового поля:

Теперь установите нулевое значение frameData и сделайте свой класс pojo @JsonInclude (value = Include.NON_NULL)

, а затем снова преобразовать его в json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...