这是我最初的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;
}
答案 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();
}
}