当前位置: 首页 > 知识库问答 >
问题:

使用jackson spring API解析嵌套json[重复]

和季
2023-03-14

我能够使用ObjectMapper类解析嵌套json字符串。这里的问题是,解析嵌套json变得越来越困难,因为我不得不编写大量样板代码来实现将json解析为java对象的最终结果。在spring中,除了这种方法之外,还有什么更好的解析方法吗?

域类:

组件类

public class Components {

    private String name;

    private String url;

    private List<Properties> properties;

    // getters and setters
}

属性类:

public class Properties {

    private String name;

    private String value;

    private boolean exclusions;

    // getters and setters

} 

控制器类:

@RestController
public class TempController {

    String jsonResponse = null;

    @RequestMapping("/")
    public @ResponseBody String getResponse(){
        JsonreadApplication ja = new JsonreadApplication();
        jsonResponse = ja.readJsonFile();
        //System.out.println(jsonResponse);
        return jsonResponse;
    }

    @RequestMapping("/temp")
    public @ResponseBody String getTempByServerType(String jsonResponse){
        jsonResponse = getResponse();
        Components components = new Components();
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            Iterator<Entry<String, JsonNode>> fieldNames = objectMapper.readTree(jsonResponse).fields();
            while(fieldNames.hasNext()){
                System.out.println(fieldNames.next());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return "I've parsed json!";
    }
}

json文件:

{
    "name": "CatalogTools",
    "url": "/atg/commerce/catalog/CatalogTools/",
    "properties": [
        {
            "name": "queryASAFFabrics",
            "value": "skuType=\"ASAF_FABRIC\" AND NOT basicColor IS NULL ORDER BY dynamicAttributes.fabricpriceband, basicColor, dynamicAttributes.fabrictype, dynamicAttributes.asafpattern, dynamicAttributes.asaffabricbrand",
            "exclusions": "false"
        },
        {
            "name": "loggingDebug",
            "value": "true",
            "exclusions": "false"
        }
    ]
}

如前所述,解析可以使用ObjectMapper实例完成,但要使用大量样板代码和硬编码json元素名。有没有更好的办法?我使用Jackson库解析json文件。

我参考了许多在线链接,其中@requestbody注释用于HTTP POST操作。这里是HTTP get请求。

任何帮助都是非常感谢的。

提前多谢。

共有1个答案

岳曦
2023-03-14

您可以使用JSONCHEMA2POJO。

将JSON的示例放在那里,将“Source Type”设置为JSON,选择Annotation style to Jackson2.x或1.x,然后单击“Zip”。瞧,整个模型生成!

 类似资料:
  • 问题内容: 我正在尝试从上述JSON检索邮政编码。我正在用gson解析它。我是JSON的新手,从我在这里的所有文章中读到的内容(有些与此类似),我都知道字段名称应保持原样。所以我知道我必须做出4类,即响应,视图,结果和地址。我使它们成为静态嵌套类,但是我只得到空值作为输出。在下一个JSON中,我有多个地址。但是我只停留在这个单一的回应上。 举一个简短的例子,我尝试使用此代码检索Timestamp,

  • 我想做的是使用Gson将嵌套的json数据解析为Java对象,并使用自定义的toString()将其打印出来。 Json内容 POJO类:示例 POJO类:JsonFormatter 我的POJO还有其他类,我试图将其解析为Gson的方式是: 但是当我试图打印出它的子值时,比如 我得到了错误: 我想实现的是将上面的json内容打印成这样: 谁能帮我解决这个问题吗?提前谢谢!

  • 问题内容: 我正在将我的第一个应用程序构建在骨干网中,我想知道哪种方法是解析具有多个级别的json的最佳模式。这是一个简单的json小示例: 要打印它,我正在使用collection并在主干中查看,如下所示:COLLECTION: 这就是称为视图的两个视图,因为我想要的每个酒店都有不同的视图: 我的模板是: 但是不打印名称,我也尝试过: 但是我无法打印值名称,该怎么做?谢谢 问题答案: 首先,JS

  • 问题内容: 我正在尝试使用具有以下结构的Java中的gson解析一些JSON数据,但是通过在线查看示例,我找不到任何能完成此工作的东西。 有人可以协助吗? 问题答案: 您只需要创建一个Java类结构即可表示JSON中的数据。为了做到这一点,我建议您将JSON复制到此在线JSON Viewer中 ,您会发现JSON的结构更加清晰… 基本上,您需要这些类(伪代码): 请注意,您的类中的属性名称必须与J

  • 我收到了来自Kafka的JSON字符串,需要由PySpark处理。字符串如下所示: 我的计划是将字符串分成JSON字段。为此,我定义了以下模式: 但是,使用此架构会导致以下错误: 但是,如果我使用没有嵌套字段的模式(如下所示),我可以解析: 我的目标是得到这样的输出: 我想在这方面得到一些帮助。现在我可以得到除嵌套结构之外的所有字段。 我使用的模式如下: Adam提到的模式适用于这个特定的字符串。

  • 问题内容: 此JSON输出来自MongoDB聚合查询。我本质上需要将嵌套数据JSON解析为以下’ 和值。 我尝试了5种不同的技术来从中获得所需的信息,但是使用和模块却遇到了问题。 理想情况下,输出将是这样的: 问题答案: 注意:来自MongoDB的JSON响应实际上无效。JSON需要双引号(),而不是单引号()。 我不确定为什么您的响应中有单引号而不是双引号,但是从其外观上,您可以替换它们,然后只