【问题标题】:complicated json to pojo复杂的 json 到 pojo
【发布时间】:2014-08-07 09:09:03
【问题描述】:

你能帮我设计这样的json的pojo类吗,其中属性用作值?

{"1":
    {
    "12.08.2014":
        {"start_time":"09:00","end_time":"11:00"},
    "15.08.2014":
        {"start_time":"09:00","end_time":"11:00"},
    }
,
"2":
    {
    "25.08.2014":
        {"start_time":"09:00","end_time":"11:00"},
    "27.08.2014":
        {"start_time":"09:00","end_time":"11:00"},
    "29.08.2014":
        {"start_time":"09:00","end_time":"11:00"}
    }
}

我想要一些这样的

class POJO {
    class Schedule{
        @JsonProperty("start_time")
        String startTime;
        @JsonProperty("end_time")
        String endTime;

        @JSON???????
        String date;
    }
    @?????????
    List<Schedule> scheduleList;
}

【问题讨论】:

  • 我在谷歌上搜索教程,但每个示例都只是简单的属性:值案例。

标签: java android json jackson


【解决方案1】:

您可以将其保存为地图地图。并将内部时间详细信息作为自定义对象。所以最终结果就像Map&lt;String, Map&lt;String, Time&gt;&gt;。然后你像GsonJackson 这样的json 解析器来解析这个值。例如

杰克逊风格

public class Time {
    @JsonProperty(value="start_time")
    private String startTime;
    @JsonProperty(value="end_time")
    private String endTime;

    // Getter Setter
}

ObjectMapper mapper = new ObjectMapper();
Map<String, Map<String, Time>> data = mapper.readValue(json, new TypeReference<Map<String, Map<String, Time>>>() {});

Gson 风格

class Time {
    @SerializedName(value="start_time")
    private String startTime;
    @SerializedName(value="end_time")
    private String endTime;

    // Getters Setters
}

Gson gson = new Gson();
Map<String, Map<String, Time>> data = gson.fromJson(json, new TypeToken<Map<String, Map<String, Time>>>() {}.getType());

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    class MyItem{
        String id;
        List<MyEvent> events;
    }
    
    class MyEvent{
        Date eventDate;
        int startTime;
        int endTime;
    }
    

    当然,你需要写一个解析器。

    【讨论】:

    • 那么,用ObjectMapper来自动解析是不可能的吧?
    • afaik,这是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多