Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析Json数组_Json - Fatal编程技术网

如何解析Json数组

如何解析Json数组,json,Json,如何在java中解析这个JSON?我使用了和,并最终选择了Jackson。它更适合需要JSON解析的特定java项目,现在看起来更灵活和/或更熟悉 在丢弃前导的$(无效的JSON)后,使用Jackson: 输出: // input is your JSON object ObjectMapper mapper = new ObjectMapper(); // could also use Jackson ObjectNodes: JsonNode rootNode = mapper.readV

如何在java中解析这个JSON?

我使用了和,并最终选择了Jackson。它更适合需要JSON解析的特定java项目,现在看起来更灵活和/或更熟悉

在丢弃前导的
$
(无效的JSON)后,使用Jackson:

输出:

// input is your JSON object
ObjectMapper mapper = new ObjectMapper();

// could also use Jackson ObjectNodes:
JsonNode rootNode = mapper.readValue(input.getBytes(), JsonNode.class); 
JsonNode sub1 = rootNode.get("1");
JsonNode sub2 = rootNode.get("2");

if (sub1 != null)
{
    System.out.println("1.vertical_name: " + sub1.get("vertical_name"));
    System.out.println("1.meta_title: " + sub1.get("meta_title"));
}

if (sub2 != null)
{
    System.out.println("2.vertical_name: " + sub2.get("vertical_name"));
    System.out.println("2.meta_title: " + sub2.get("meta_title"));
}
您的输入JSON是独特的,因为它似乎使用JSON对象作为JSON数组,外部对象具有字段
1、2、…
。因此,上述方法将JSON解析为通用对象,尽管您也可以使用Jackson将其解析为java
Maps
——请参阅

导航结果数据结构需要了解输入,即使用
JsonNode.get(“1”),但无论如何表示JSON,都需要做出相同的假设

您还可以使用来迭代未知数量的此类“索引”。如果您不知道
1
2
等的编号,这将非常有用


此外,您可以创建一个与每个子对象匹配的java类,并使用Jackson为每个子对象创建该类的实例。请参阅。

dupe:不仅是一个明显的dupe,而且很容易用谷歌搜索。请访问并查看100多个链接,这些链接几乎可以在您选择的任何语言中解析JSON。这不是有效的JSON,因为在开始时有一个
$
。谢谢兄弟。事实上,我对这个JSON是新手。现在我想在两个Bean类中解析这些JSON值,如MEN&WOMEN>我该怎么做。请给出一些提示。如果我得到JSON数据,请给出一些提示从URl中,我很难知道JsonNode id。可能不止2个。当时如何获取值。请参见答案中关于
迭代器的部分:这将为您提供JSON对象的顶级属性列表,因此您不需要通过“1”、“2”、“3”执行单个
get
调用
// input is your JSON object
ObjectMapper mapper = new ObjectMapper();

// could also use Jackson ObjectNodes:
JsonNode rootNode = mapper.readValue(input.getBytes(), JsonNode.class); 
JsonNode sub1 = rootNode.get("1");
JsonNode sub2 = rootNode.get("2");

if (sub1 != null)
{
    System.out.println("1.vertical_name: " + sub1.get("vertical_name"));
    System.out.println("1.meta_title: " + sub1.get("meta_title"));
}

if (sub2 != null)
{
    System.out.println("2.vertical_name: " + sub2.get("vertical_name"));
    System.out.println("2.meta_title: " + sub2.get("meta_title"));
}
1.vertical_name: "Men"
1.meta_title: "Online Shopping For Men - Buy Mens Clothes, Footwear & Accessories At Fetise "
2.vertical_name: "Women"
2.meta_title: "Online Shopping for Women - Buy Womens Clothes, Footwear & Accessories At Fetise"