json 序列化问题?当列名为可变数值时,如果序列化?
[{"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序列化”问题呢?
你先写出一个“列名可变”的对象定义出来。写不出来这个,就别谈它的序列化问题。
------解决方案-------------------- 探讨 获得了这个JSON字符,在tags里面,有个列名 为可变的数值。怎么序列化列呢?
------解决方案-------------------- 哪有什么“列名可变的对象”?你需要首先识别类型,然后反序列为不同类型的对象!
而假设想让某个对象的属性/字段的命名为数字,则根本不可能。
------解决方案-------------------- 举个例子吧。假设你从“绘图数据库”中检索到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
{
........
------解决方案-------------------- 探讨 [{"id":1612870980,"tags":[{"13575":"眼镜","weight":"2298"},{"8291":"社会化媒体","weight":"2093"},{"292":"互联网","weight":"326003"}]} ] 如这个JSON字符串,我是用DataContractJsonSerializer 来将Json字符串转化为对象,这应该怎么来做呢??
------解决方案-------------------- 在.net中已经包括了ExpandoObject,我想如果它不支持很灵活的json序列化/反序列化,而仅仅有个简单的 DataContractJsonSerializer,实在说不过去。 假设.net framework的json处理机制很弱智,你可以考虑使用json.net,而再也不使用.net类库里的功能。