[{"id":1612870980,"tags":[{"13575":"眼镜","weight":"2298"},{"8291":"社会化媒体","weight":"2093"},{"292":"互联网","weight":"326003"}]}
]
获得了这个JSON字符,在tags里面,有个列名 为可变的数值。怎么序列化列呢?
下面是我写的映射列:
[DataContract]
public class UserTags
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "tags")]
public List<Tags> TagsInfo { get; set; }
}
[DataContract]
public class Tags
{
//??这里怎么办呢
public string TagName { get; set; }
[DataMember(Name = "weight")]
public string TagId { get; set; }
}
------解决方案--------------------------------------------------------
这种问题应该在拼JSON的时候不该出现
你可以在拼JSON的时候避免或者得到JSON的时候处理一下,换成后台可正常序列化的
------解决方案--------------------------------------------------------
你连Tags类定义都写不出来,又何必画蛇添足地去纠结什么“列名可变的对象的json序列化”问题呢?
你先写出一个“列名可变”的对象定义出来。写不出来这个,就别谈它的序列化问题。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
哪有什么“列名可变的对象”?你需要首先识别类型,然后反序列为不同类型的对象!
而假设想让某个对象的属性/字段的命名为数字,则根本不可能。
------解决方案--------------------------------------------------------
举个例子吧。假设你从“绘图数据库”中检索到1个矢量图,它包括1万个图形对象,它的原型也许是这样的
- C# code
class box{ public string title; public Shape[] shapes;}abstract class Shape{ public Color color;}class polyline: Shape{ public point[] Points;}class polygon: Shape{........
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
在.net中已经包括了ExpandoObject,我想如果它不支持很灵活的json序列化/反序列化,而仅仅有个简单的 DataContractJsonSerializer,实在说不过去。
假设.net framework的json处理机制很弱智,你可以考虑使用json.net,而再也不使用.net类库里的功能。