gpt4 book ai didi

java - 在java中将json字符串切割成两个不同的json字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:13 25 4
gpt4 key购买 nike

我对 json 很陌生,通常不使用做太多编码。我想要一个将以下 json 字符串作为输入的服务

{
"var": "test11",
"_env": {
"activation": "wm6a93e3a80-0307-12cc-96e6-d79883bf841a",
"uuid": "48cdc2d0-0212-11e6-8315-d79883bf841a",
"eventID": 49167,
"recvTime": "Thu Apr 14 00:27:03 PDT 2016"
}
}

输出为

{
"var": "test11"
}

{
"_env": {
"activation": "wm6a93e3a80-0307-12cc-96e6-d79883bf841a",
"uuid": "48cdc2d0-0212-11e6-8315-d79883bf841a",
"eventID": 49167,
"recvTime": "Thu Apr 14 00:27:03 PDT 2016"
}
}

这只是一个例子。它可以在 json 字符串中包含更多对象,并且 _env 不会总是出现在末尾。

有没有什么简单的方法可以使用jackson API来实现?

最佳答案

创建一个类来保存您的 JSON,如下所示:

public class Bar {

private String var;

@JsonProperty("_env")
private Object env;

public String getVar() {
return var;
}

public void setVar(String var) {
this.var = var;
}

public Object getEnv() {
return env;
}

public void setEnv(Object env) {
this.env = env;
}
}

并设置映射器在反序列化之前不会因未知属性而失败;

public static void main(String[] argv) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

Bar bar = mapper.readValue(JSON, Bar.class);

}

这样,无论 _env 是否存在,它都会起作用。

如果你需要按每个节点“拆分”json,你可以这样做:

JsonNode node = mapper.readTree(JSON);
List<String> nodeJsons = new ArrayList<>();
Iterator<Entry<String, JsonNode>> nodeIterator = node.fields();
while (nodeIterator.hasNext()) {
Map.Entry<String, JsonNode> entry = nodeIterator.next();
nodeJsons.add(mapper.writeValueAsString(entry));
}

这样你最后会有一个 json 字符串列表,每个节点都自己序列化,而不是一个包含所有内容的“大”json。

关于java - 在java中将json字符串切割成两个不同的json字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com