【问题标题】:Custom serialization/deserialization of specific objects特定对象的自定义序列化/反序列化
【发布时间】:2011-09-21 14:45:03
【问题描述】:

我需要反序列化的JSON-objects 具有以下形式:

{
   "typeName": 
     {
       "field1": "content1", 
       "field2": "content2" ...
     }
} 

基本上这意味着,除了数组之外的每个对象都包含在一个包装对象中,其中字段名称是被包装对象的类型。需要类型名称来创建特定子类的实例。我无法更改任何内容,但需要使用此界面。我尝试编写一个自定义转换器,但我不知道如何区分类型信息和包装对象的普通字段名称。有没有可能以任何方式解决这个问题?

【问题讨论】:

    标签: .net serialization json.net


    【解决方案1】:

    您的问题不是很清楚,但我假设您的“typeNames”不固定。如果是这样,您可以使用Json.NET 反序列化成字典,即:

        public void DeserializeSomeStuff()
        {
            const string json = @"{""typeName"":{""field1"": ""content1"",""field2"": ""content2""}}";
            var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(json);
            foreach (var kvp in obj)
            {
                Console.WriteLine("key={0}", kvp.Key);
                foreach (var kv in kvp.Value)
                {
                    Console.WriteLine("    key={0} value={1}", kv.Key, kv.Value);
                }
            }
    
            // key=typeName
            //     key=field1 value=content1
            //     key=field2 value=content2
        }
    

    【讨论】:

      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2019-07-10
      相关资源
      最近更新 更多