我有一个像这样的JSON字符串:
{"customerid":null,"clientid":"123456","test_id":"98765","pet_id":0,"qwer_id":0,"timestamp":1411811583000}
我需要制作另一个JSON字符串,如下所示:
{"customerid":"System.nanoTime()","test_id":"98765","timestamp":1411811583000}
所以基本上给了一个原始的JSON字符串,我需要提取" customerid"," test_id"和"时间戳"只有然后从中创建一个新的JSON字符串。此外," customerid"的价值在新的json中,我将使System.nanoTime()
的价值。
以下是我的代码:
JsonObject originalJSONString = new JsonObject();
// some code here
Gson gson = new GsonBuilder().serializeNulls().create();
System.out.println(gson.toJson(originalJSONString));
// make a new JSON String now
我在我的例子中使用GSON。我很困惑如何从原始的json中提取我感兴趣的相关字段,然后从中创建一个新的json?
答案 0 :(得分:1)
假设originalJSONString
代表
{"customerid":null,"clientid":"123456","test_id":"98765","pet_id":0,"qwer_id":0,"timestamp":1411811583000}
你可以试试像
这样的东西JsonObject newJsonObject = new JsonObject();
newJsonObject.addProperty("customerid", "System.nanoTime()");//new property
newJsonObject.add("test_id", originalJSONString.get("test_id"));//copy property
newJsonObject.add("timestamp", originalJSONString.get("timestamp"));//copy property
System.out.println(gson.toJson(newJsonObject));
输出:{"customerid":"System.nanoTime()","test_id":"98765","timestamp":1411811583000}
答案 1 :(得分:0)
您可以将JSON字符串转换为地图,然后只获取所需的键/值。
类似的东西:
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
....
//convert JSON string to Map
map = mapper.readValue(jsonString, new TypeReference<HashMap<String,String>>(){});
...
//add key and values in a new one
JsonObject newJsonObject = new JsonObject();