如何在Java中将数据从一个json对象传递到另一个?

时间:2018-06-28 10:03:58

标签: java json

这是我最初的json对象:

{
    "user": "user1",
    "twitter": "tweet1",
    "timestamp": 13661506
},
{
    "user": "user2",
    "twitter": "tweet2",
    "timestamp": 13661544
}

我需要输出json对象像这样:

{
    "user":"user1",
    "timestamp": 13661506
},
{
    "user":"user2",
    "timestamp": 13661544
}

“用户”的数据类型为字符串,“时间戳”为长。我需要在我的新对象中保留这些数据类型。有没有办法在Java中做到这一点?

我试图使用ArrayList来实现这一点。这是我目前的方法。如您所见,这是少年时期,不可行,而且我遇到了错误。

// data_obj是json对象 // Choice_array包含选定的值

    ArrayList<ArrayList<Object>> data_array = new ArrayList<ArrayList<Object>>();
    int s=0, l=0;
    for(i=0; i< data_obj.length(); i++)'
    { 
      ArrayList<String> data_array_string = new ArrayList<String>();    
      ArrayList<Long> data_array_long = new ArrayList<String>();    
      for(i1=0; i1< choice_array.length(); i1++)
      {
        Object myObj = data_obj.get(i);
        if(myObj instanceof Long)
        {
          data_array_long.add(data_obj.getLong(i)); 
          l=1;
        }
        else
        {   
          data_array_string.add(data_obj.getString(i)); 
          s=1;
         }
      }
      if(l==1)
      {
        data_array.add(data_array_long);
      }
      else
      {
        data_array_string.add(data_obj.getString(i)); 
      }
      l=0;s=0;
    }

3 个答案:

答案 0 :(得分:0)

您可以使用所有字段创建一个对象,然后使用Jackson API将您的对象直接解析为正确的JSON格式

关于杰克逊文档的所有解释都很好

Jackson允许您进行从对象到json以及从json到对象的许多操作

答案 1 :(得分:0)

我建议您使用org.json库
以下是下载链接:http://www.java2s.com/Code/Jar/o/Downloadorgjsonjar.htm
或用于gradle:compile group: 'org.json', name: 'json', version: '20180130'

然后您可以创建JSONObject,如下所示:

JSONObject json = new JSONObject()
        .put("user", "user1")
        .put("twitter", "tweet1")
        .put("timestamp", 13661506);

或带字符串:

String jsonString = "{\"user\": \"user1\",\"twitter\": \"tweet1\",\"timestamp\": 13661506}";
JSONObject json = new JSONObject(jsonString);

这些JSONObject很容易处理。对于您的问题,您可以轻松删除“ twitter”:

json.remove("twitter");

结果是:

System.out.println(json.toString());
//{"user":"user1","timestamp":13661506}

我希望这可以帮助您

答案 2 :(得分:0)

您可以使用org.codehaus.jackson api。

ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(your original json);

然后迭代:

Iterator<JsonNode> it = actualObj.iterator();
while (it.hasNext()) {
    JsonNode node = it.next();
    if (!(node.has("user") || node.has("timestamp"))) {
        it.remove();
    }
}