gpt4 book ai didi

java - JSON - 检查数组是否存在

转载 作者:搜寻专家 更新时间:2023-11-01 02:53:29 24 4
gpt4 key购买 nike

我有一个包含一些数组的 JSON 文件。我想知道是否有人知道如何检查文件中是否存在特定数组。

编辑:这就是我的文件的组织方式。

           {
'Objects':
{
'array1':
[
{
'element1': 'value',
'element1': 'value',
'element1': 'value'
}
],
// more arrays.
}

我想搜索数组并检查特定数组是否存在。如果确实如此,那么我将序列化它。

提前感谢所有帮助

最佳答案

以下是您可以使用 Jackson 采取的方法示例。它使用最新问题更新中提供的相同 JSON 结构,以及匹配的 Java 数据结构。这允许非常简单的反序列化,只需一行代码。

我选择将 JSON 数组反序列化为 Java 列表。很容易将其更改为使用 Java 数组。

(请注意,如果您可以控制更改它,我建议更改此 JSON 结构的问题。)

输入.json:

{
"objects": {
"array1": [
{
"element1": "value1",
"element2": "value2",
"element3": "value3"
}
],
"array2": [
{
"element1": "value1",
"element2": "value2",
"element3": "value3"
}
],
"array3": [
{
"element1": "value1",
"element2": "value2",
"element3": "value3"
}
]
}
}

Java 代码:

import java.io.File;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
import org.codehaus.jackson.map.ObjectMapper;

public class Foo
{
public static void main(String[] args) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
// configure Jackson to access non-public fields
mapper.setVisibilityChecker(mapper.getVisibilityChecker().withFieldVisibility(Visibility.ANY));

// deserialize JSON to instance of Thing
Thing thing = mapper.readValue(new File("input.json"), Thing.class);

// look for the target named array2
if (thing.objects.containsKey("array2"))
{
// an element with the target name is present, make sure it's a list/array
if (thing.objects.get("array2") instanceof List)
{
// found it
List<OtherThing> target = thing.objects.get("array2");
OtherThing otherThing = target.get(0);
System.out.println(otherThing.element1); // value1
System.out.println(otherThing.element2); // value2
System.out.println(otherThing.element3); // value3
}
// else do something
}
// else do something
}
}

class Thing
{
Map<String, List<OtherThing>> objects;
}

class OtherThing
{
String element1;
String element2;
String element3;
}

关于java - JSON - 检查数组是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669598/

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