如何使用相同的密钥和不同的数据解析JSON数据?

时间:2016-09-15 08:21:09

标签: ios objective-c json swift

解析JSON数据时遇到了一些问题。

有一个Web API,基本响应数据如下:

{
    topic_name: "Kevin",
    topic_type: 1,
    extraData: {}
}

使用不同的topic_type值,extraData可能具有不同的数据结构,例如extraData对象具有不同的键值。

在这种情况下,如何创建模型类并将JSON字符串解析为模型?

或者这个API设计合理吗?是否有更好的API设计来解决这些问题?

更新1:

使用相同的topic_typeextraData的结构始终相同。

我考虑过使用子类,但每个topic_type需要一个子类。

更新2:

以下是JSON数据的一些示例,不同的topic_type具有不同的extraData

当topic_type等于1时,

{
    topic_name: "Kevin",
    topic_type: 1,
    extraData: {
        data_type1: value,
        data_type2: value2
    }
}

当topic_type等于2时,

{
    topic_name: "David",
    topic_type: 2,
    extraData: {
        data_type3: value3
    }
}

它不是真正的数据,我不处理'主题'问题,只是一个例子,关键是extraData对象有不同的类型键。

2 个答案:

答案 0 :(得分:0)

JSONModel可能正是您正在寻找的。解析json并为您提供模型

答案 1 :(得分:0)

尝试定义类中的所有类型:

{
    topic_name: "Kevin",
    topic_type: 1,
    extraData: {
        data_type1: value,
        data_type2: value2,
        data_type3: value3,
    }
}

在Json解析之后,根据主题类型获取所需的数据类型。

聚苯乙烯。所有数据类型都需要可以为空