这可能在JSON中吗?
我目前正在使用json.net! 我知道如何反序列化json数据以及如何使用我们的类进行映射。 现在我渴望一些疑问!
假设我的jsonstrings是
"attributes":{ "color":"Brown", "condition":"Used", "currency":"USD", "price":"10500", "price_display":"$10,500", }
和我的属性类( 我想在其上反序列化字符串 )是
Public class Attribute { public string name{ get; set; } public string value{ get; set; } }
现在我使用以下代码进行反序列化。
JavaScriptSerializer ser = new JavaScriptSerializer(); p = ser.Deserialize(jsonString);
显然,这段代码根本不适用于上面的jsonstring。
现在如何在一个类中绑定这些名称值对? 这可能吗 ?
将来,属性可能超过10但格式将与名称值对相同
编辑:对不起,但不知何故,我把你的问题解释为好像你想要序列化 ,而不是反序列化 (但我会保留下面的原文,因为我认为这是很好的知识:))。
尝试将您的JSON字符串反序列化为Dictionary
而不是您的Attribute
。 我有预感它可能会起作用。 然后,您可以调整其余代码以使用该字典,也可以转换为Attribute
实例的集合。
下面是原始答案(与序列化相关,与您要求的相反)。
我不这么认为,但如果打算以这种方式在客户端上使用它:
attributes["color"] // returns Brown attributes["price"] // returns 10500
…然后你所追求的是“关联数组”,因为它等同于:
attributes.color attributes.price
…因为它不是一个真正的数组,但它是一个对象(javascript提供了这两种方式来引用对象属性;例如window.onload
与window["onload"]
))…
…如果将Dictionary
序列化为JSON字符串(换句话说,将您的Attribute
类更改为KeyValuePair
,或者以其他方式创建此类字典,则可以使用JavaScriptSerializer实现此目的。