如何从原始字符串中提取新的JSON字符串,从中提取几个字段?

时间:2015-04-22 21:48:22

标签: java json gson

我有一个像这样的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?

2 个答案:

答案 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();