c# - 反序列化名称未知的 JSON 对象

标签 c# json

我有这样的json

{
    "result": "success",
    "response_code": 200,
    "message": "",
    "collection": { 
        "<channel_id>": {
              "<category_id>": {
                    "id_category": "<category_id>",
                    "name": "<category>",
                    "date_created": "<date_tagged>"
                     },
               "<category_id>": {
                    "id_category": "<category_id>",
                    "name": "<category>",
                    "date_created": "<date_tagged>"
                     }
               }
            }
} 

其中channel_id和category_id不是固定名称。如何在 C# 上对其进行反序列化?

最佳答案

假设其他一切都基本固定,您可以尝试按照以下方式对此进行建模:

public class MyJsonClass
    {
        public String Result { get; set; }
        public int Response_Code { get; set; }
        public String Message { get; set; }

        public Dictionary<String, Dictionary<String, JsonCategoryDescription>>
                  Collection { get; set; }
    }

    public class JsonCategoryDescription
    {
        public String Id_Category { get; set; }
        public String Name { get; set; }
        public String Date_Created { get; set; }
    }

然后按如下方式反序列化(System.Web.Script.Serialization 命名空间):

var result = new JavaScriptSerializer().Deserialize<MyJsonClass>(myJsonString);

并且您可以访问特定字段,如下所示:

result.Collection[SOME_CHANNEL_ID][SOME_CATEGORY_ID].Name = "XXX";

关于c# - 反序列化名称未知的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931111/

相关文章:

c# - 为什么 EF 导航属性返回 null?

c# - 转换 C++ 中的 std::string,使其成为 C# 中的 byte[]

Java - 使用 Gson 库从 servlet 返回 JSON

c# - 如何将对象强制转换为内部类

c# - 通过 HTTP 与 MySQL 数据库交互

c# - 对 Object[] 数组列表的 LINQ 查询

mysql - 无法与 LoopBack 建立 MySql 连接

javascript - 我想根据时间和持续时间显示 json 中的元素,并且间隔被 settimeout 中断

javascript - 添加在 Json 对象中找到的数字

javascript - EWS - JSON 内容中无法识别 token