我不知道如何在Java类中处理嵌套的JSON值。为了尽可能简单,我创建了四个Java类,每个类都有“嵌套级别”。然而,我试图在一个Java类中包含所有这些值。我该怎么做?
Json:
{
"_embedded":{
"events":[
{
"name":"KISS | End Of The Road World Tour",
"dates":{
"start":{
"dateTime":"2021-06-12T19:00:00Z"
},
"classifications":[
{
"name":"Rock"
}
],
"_embedded":{
"venues":[
{
"name":"Atlas Arena"
}
]
}
}
}
]
}
}
Java类:
@Data
public class EventList {
@JsonProperty("_embedded")
private Events events;
}
@Data
public class Events {
@JsonProperty("events")
public List<EventDetails> eventsList;
}
@Data
public class EventDetails {
private String name;
@JsonProperty("dates.start.dateTime")
private String startDate;
@JsonProperty("classifications.genre.name")
private String musicType;
@JsonProperty("_embedded.venues")
private List<Venues> eventPlaceName;
}
@Data
public class Venues {
private String name;
}
您可以在一个类中俱乐部所有的支持类,如下所示:
@Data
public class Start {
@JsonProperty("dateTime")
public Date dateTime;
public static class Venue {
@JsonProperty("name")
public String name;
}
@Data
public static class Classification {
@JsonProperty("name")
public String name;
}
@Data
public static class Embedded2 {
@JsonProperty("venues")
public List<Venue> venues;
}
@Data
public static class Dates {
@JsonProperty("start")
public Start start;
@JsonProperty("classifications")
public List<Classification> classifications;
@JsonProperty("_embedded")
public Embedded2 _embedded;
}
@Data
public static class Event {
@JsonProperty("name")
public String name;
@JsonProperty("dates")
public Dates dates;
}
@Data
public static class Embedded {
@JsonProperty("events")
public List<Event> events;
}
@Data
public static class Root {
@JsonProperty("_embedded")
public Embedded _embedded;
}
}
您可以测试(我使用Jackson进行反序列化)
创建ObjectMapper类并反序列化为根类
public class TestJson {
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
try {
Start.Root root = objectMapper.readValue(new File("C:\\Anurag\\Development\\CodeBase\\demo\\src\\main\\java\\com\\example\\demo\\domain\\testJson\\test.json"), Start.Root.class);
System.out.println(root);
} catch (Exception e) {
e.printStackTrace();
}
}
}
**根据您的要求进行更改**
@Data
public class EventList {
@Getter
@JsonProperty("_embedded")
private Events events;
@Data
public static class Venue {
@JsonProperty("name")
public String name;
}
@Data
public static class Classification {
@JsonProperty("name")
public String name;
}
@Data
public static class Embedded2 {
@JsonProperty("venues")
public List<Venue> venues;
}
@Data
public static class Dates {
@JsonProperty("start")
public Start start;
@JsonProperty("classifications")
public List<Classification> classifications;
@JsonProperty("_embedded")
public Embedded2 _embedded;
}
@Data
public static class EventDetails {
@JsonProperty("name")
public String name;
@JsonProperty("dates")
public Dates dates;
}
@Data
public static class Events {
@JsonProperty("events")
public List<EventDetails> eventsList;
}
@Data
public static class Start {
@JsonProperty("dateTime")
public Date dateTime;
}
}
public class TestJson {
public static void main(String[] args) {
List<EventList.EventDetails> anyCity = findEventByCity("any city");
anyCity.stream().forEach(p-> {
System.out.println(p);
});
}
@SneakyThrows
static List<EventList.EventDetails> findEventByCity(String city) {
ObjectMapper objectMapper = new ObjectMapper();
EventList eventList = objectMapper.readValue(new File("C:\\Anurag\\Development\\CodeBase\\demo\\src\\main\\java\\com\\example\\demo\\domain\\testJson\\test.json"), EventList.class);
List<EventList.EventDetails> eventsList = eventList.getEvents().getEventsList();
return eventsList;
}
}
我需要在这里显示json响应
我试图动态解析一些JSON到一个Map 但是当我尝试使用一些更复杂的JSON和嵌套信息时失败了。我试图从json解析示例数据。组织 我得到以下错误 异常在线程"main"com.fasterxml.jackson.databind.JsonMapping异常:不能反序列化实例的java.lang.字符串START_OBJECT令牌 有没有办法将复杂的JSON数据解析成映射?
我有两个嵌套的case类: 当然,解决方案应该是泛型的,并且适用于任何case类。 注意:这个讨论很好地回答了如何将单个case类映射到映射。但我无法将其用于嵌套的case类。相反,我得到了:
问题内容: 我正在尝试为如下对象创建动态映射: 我希望属性为嵌套类型,该类型是我在下面的映射中使用nested_feature模板定义的,并且按预期工作。但是,我也想让属性的嵌套对象中的每个属性都带有定义的其他属性。我尝试了第二个nested_template模板,但没有成功。 不幸的是,属性中的属性是从另一个进程创建的,几乎可以是任何名称/值对。关于如何使用动态模板将属性设置为嵌套的任何建议,以
我试图为对象创建一个动态映射,如下所示:
我用的是Protobuf 3。从文档来看,似乎无法定义嵌套贴图: 我正在尝试创建一种消息类型来表示期权链的定价信息(出价和要价)。对于那些不熟悉这些金融工具的人,基本上我有一套“到期日期(YYYYMMDD)”。在每个过期日期中,我都有一组“strikes(float number;如果需要,可以用字符串表示,我同意)”。在每次行使中,我有两个期权,一个“看跌”和一个“看涨”(这被称为期权的“右”)