首页 > 解决方案 > 使用 Jackson 将 JSON 字符串解析为数组

问题描述

我收到以下 JSON 响应:

[
{
    "name": "Assets",
    "id": "assets---0020",
    "elements": [
        {
            "name": "user generates an token",
            "steps": [
            {
                "name": "I have generated a common access token",
                "result": {
                    "duration": 1124800,
                    "status": "passed"
                }                    
            }
            ]
        },
        {
            "name": "user generates an token",
            "steps": [
            { 
                "name": "I have generated a common access token",
                "result": {
                    "duration": 1124800,
                    "status": "passed"
                }                    
            }
            ]
        },
        {
            "name": "User clicks on dropdown",
            "steps": [
            {
                "name": "User clicks on dropdown and selects option and api response printed",
                "result": {
                    "duration": 1124800,
                    "status": "failed"
                }
            }
            ]
        }
    ]    
}
]

我想要以下输出:

Name: Assets
Total - 3
No Of Success - 2
No Of Failed - 1

我一直试图用杰克逊自动解析它,但几乎没有成功。我能够显示:

Name: Assets 

下面是我的主要 Java 类的代码:

package JsonToJava.test;

import java.io.File;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;

import com.fasterxml.jackson.databind.ObjectMapper;


public class JsontoJava
{

    public static void main( String[] args ) throws JsonMappingException, JsonProcessingException
    {        
       ObjectMapper mapper = new ObjectMapper();

       try {            
      
          Data[] dataObj  = mapper.readValue(new File("data/sample_array_data.json"), Data[].class);
       
      
          for (Data data: dataObj) {
           
             System.out.println("Track Name--->"+data.getName());
            
             System.out.println("Printing Elements--->"+data.getElements());
            
             System.out.println("------------------------");
          }
        } catch (JsonMappingException e) {
          e.printStackTrace();
        }catch (JsonProcessingException e) {
          e.printStackTrace();
        }catch (IOException e) {
          e.printStackTrace();
      } 
   }
}

但没有得到如何循环元素并从中获取所需的数据。有谁知道解决方案是什么?请帮忙。

标签: javajsonjackson

解决方案


这样做Data[] datas = mapper.readValue(new File("sample_json_file.json"), Data[].class);然后循环。


推荐阅读