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

如何在Java中将此JSON解析为我的POJO

赫连俊悟
2023-03-14

我有这个JSON结构,我试图解析为一个Java对象,但不知道我在这里错过了什么。

{
   "response":{
      "status":1,
      "httpStatus":200,
      "data":{
         "94":{
            "Offer":{
               "id":"94",
               "name":"Survey Junkie Panel - US, CA, AU (SOI)",
               "description":"<b>Description:</b> Start earning cash and rewards by doing surveys.<br><br>\r\n<b>Requirement:</b> Email Submit<br><br>\r\n<b>Country(ies):</b> US, CA, AU<br><br>\r\n<b>Media:</b> Display, Email<br><br>\r\n<b>Restrictions:</b> No incentives; no search; no pops; no brokering; no users under 18; no SnapChat<br><br>\r\n<b>Other:</b> New pubs need to pause at 300 leads and ask to be evaluated (if higher test cap is necessary, contact your affiliate manager to discuss). If traffic quality is good, Advertiser will lift lead cap as long as quality remains consistent. New partners should not start on weekends. Contact publishers@pantherainteractive.com when you reach your assigned lead cap.<br><br>",
               "require_approval":"0",
               "require_terms_and_conditions":0,
               "terms_and_conditions":null,
               "preview_url":"https://www.surveyjunkie.com/",
               "currency":null,
               "default_payout":"1.20000",
               "protocol":"server",
               "status":"active",
               "expiration_date":"2030-12-23 04:59:59",
               "payout_type":"cpa_flat",
               "percent_payout":"0.00",
               "featured":null,
               "conversion_cap":"0",
               "monthly_conversion_cap":"0",
               "payout_cap":"0.00",
               "monthly_payout_cap":"0.00",
               "allow_multiple_conversions":"0",
               "allow_website_links":"0",
               "allow_direct_links":"0",
               "show_custom_variables":"0",
               "session_hours":"24",
               "show_mail_list":"0",
               "dne_list_id":"0",
               "email_instructions":"0",
               "email_instructions_from":"",
               "email_instructions_subject":"",
               "enforce_secure_tracking_link":"1",
               "has_goals_enabled":"0",
               "default_goal_name":"",
               "modified":1622672025,
               "use_target_rules":"0",
               "use_payout_groups":"0",
               "link_platform":"",
               "is_expired":"0",
               "dne_download_url":null,
               "dne_unsubscribe_url":null,
               "dne_third_party_list":false,
               "approval_status":"approved"
            },
            "Country":{
               "US":{
                  "id":"840",
                  "code":"US",
                  "name":"United States",
                  "regions":[
                     
                  ]
               },
               "AU":{
                  "id":"36",
                  "code":"AU",
                  "name":"Australia",
                  "regions":[
                     
                  ]
               },
               "CA":{
                  "id":"124",
                  "code":"CA",
                  "name":"Canada",
                  "regions":[
                     
                  ]
               }
            }
         }
      }
   }
}

我有报价数据:

@Getter @Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class OfferData {

  @JsonProperty("Offer")
  Offer offer;

  @JsonProperty("Country")
  Country country;

}

我已经恢复正常了,问题出在Country object上。

国家:

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class Country {
  Map<String, CountryData> countryData;
}

国家数据:

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class CountryData {
  @JsonProperty("id")
  private String id;
  @JsonProperty("code")
  private String code;
  @JsonProperty("name")
  private String name;
  @JsonProperty("regions")
  List<Region> regions;
}

我收到以下错误:

Servlet。路径为[]的上下文中的servlet[dispatcherServlet]的service()引发了异常[请求处理失败;嵌套异常为org.springframework.web.client.RestClientException:提取类型[class com.sample.surveydemo.model.dto.OfferMapper]和内容类型[应用程序/json]的响应时出错];嵌套异常为org。springframework。http。转换器。HttpMessageNoteableException:JSON解析错误:无法反序列化com类型的值。样品surveydemo。模型dto。来自数组值的国家/地区(tokenJsonToken.START\u Array);嵌套异常为com。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法反序列化com类型的值。样品surveydemo。模型dto。国家(Country)来自[源:(org.springframework.util.StreamUtils$nonclosingputstream);行:1,列:92576](通过引用链:com.sample.surveydemo.model.dto.OfferMapper[“response”]-


共有1个答案

彭宏深
2023-03-14

去https://www.jsonschema2pojo.org/.复制并粘贴JSON数据并调整参数(生成getter和setter,toString e.t.c)。单击preview查看以POJO格式转换的JSON数据,或者您可以下载包含POJO类的zip文件。

 类似资料:
  • 问题内容: 我想解析以下Json响应: 我尝试使用SIMPLE JSON解析器,但这对我不起作用: 问题答案: 输出: 评论: 我没有添加验证 [编辑] 加载json字符串的其他方法

  • 问题内容: 我想拉出用户块。JSON结果将始终更改,有时将返回4个用户,有时将返回10个,等等。 问题答案: 使用JSONObject

  • 我正在尝试将JSON转换为GSON,我不确定这是最好的结构。 所有响应都由代码、消息和数据结构组成。但数据的内部结构可能会有所不同。 这是我的回应对象

  • 问题内容: 我从服务中接收到非常深的JSON对象字符串,我必须将其解析为JSON对象,然后将其映射到类。 如何在Kotlin中将JSON字符串转换为对象? 在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。 在此先感谢您的帮助。最好是在本地,我试图减少所需的依

  • 问题内容: 因此,我坐在这里与Google Geocoder一起,后者通过’GOOGLE_URL / xml?address = input&sensor = false’返回XML。我需要使用Java来获取它,并将其解析为JSON对象并继续发送。 我将如何去做?(不,这不是家庭作业)请注意,最好在标准库中完成。目前,我正在尝试确定是否可以使用例如SAX来完成。 问题答案: 这是一个工作示例,显示

  • 问题内容: 我必须将下面嵌套的Json数组的数据解析到我的应用程序中。我很困惑如何从中获取价值。 任何人都可以指导我如何从中获取内部价值。 我已经试过了 问题答案: 这是我认为您的JSON解析器应为的样子(可能存在一些拼写错误,我没有在编辑器上测试此代码:)):