【问题标题】:Newtonsoft json - deserialize classes with same name, but different propertiesNewtonsoft json - 反序列化具有相同名称但不同属性的类
【发布时间】:2020-07-02 09:48:44
【问题描述】:

我正在使用一个 REST API - 它返回 JSON。我在 C# 中使用 NewtonSOFT JSON 反序列化 JSON。

返回的 JSON 包含一个“Answer”对象,该对象包含另一个“Answer”对象 - 问题是 2 个“Answer”对象具有不同的属性/定义。

在 C# 或 NewtonSoft 中如何处理?

Json structure

"answers": [
                {
                    "tag": {
                        "id": 803,
                        "name": "Oplysninger om bestilling af tilstandsrapporten"
                    },
                    "option": false,
                    "answers": [
                        {
                            "label": "Vælg",
                            "value": "Ved hjælp af familie, venner eller bekendte mv",
                            "show_inline": false
                        }
                    ],
                    "question": "Hvordan fandt du den bygningssagkyndige?",
                    "seller_question_id": 1
                }

【问题讨论】:

    标签: c# json serialization json.net


    【解决方案1】:

    这里的“answers”是一个属性名,而不是类名,所以您需要做的就是以与您显示的模式相匹配的方式定义您的类。拥有两个名为 "answers" 的不同属性不会带来任何特别的复杂性。

    class Response
    {
        public IList<OuterAnswer> answers { get; set; }
    }
    
    class OuterAnswer
    {
        public Tag tag { get; set; }
        public bool option { get; set; }
        public IList<InnerAnswer> answers { get; set; }
        public string question { get; set; }
        public long seller_question_id { get; set; }
    }
    
    class InnerAnswer
    {
        public string label { get; set; }
        public string value { get; set; }
        public bool show_inline { get; set; }
    }
    

    【讨论】:

    • 是的,当然 - 你是对的,你在 JSON 中瞎了眼,混淆了属性和类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多