这可能在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.onloadwindow["onload"] ))…

…如果将Dictionary序列化为JSON字符串(换句话说,将您的Attribute类更改为KeyValuePair ,或者以其他方式创建此类字典,则可以使用JavaScriptSerializer实现此目的。