我目前正在使用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();
<classname> p = ser.Deserialize<classname>(jsonString);
显然,这段代码根本不适用于上面的jsonstring。
现在如何在一个类中绑定这些名称值对?这可能吗?
以后,属性可能超过10但格式与名称值对相同
答案 0 :(得分:1)
尝试将您的JSON字符串反序列化为Dictionary<string,string>
而不是Attribute
。我有预感可能会奏效。然后,您可以调整代码的其余部分以使用该字典,也可以转换为Attribute
个实例的集合。
下面的原始答案(与序列化相关,与您要求的相反)。
我不这么认为,但如果打算以这种方式在客户端使用它:
attributes["color"] // returns Brown
attributes["price"] // returns 10500
...那么你所追求的是“关联数组”,因为它等同于:
attributes.color
attributes.price
...因为它不是一个真正的数组,但它是一个对象(javascript提供了这两种引用对象属性的方法;例如window.onload
与window["onload"]
相同)...
...如果您将Dictionary<string,string>
序列化为JSON字符串(换句话说,将Attribute
类更改为KeyValuePair<string,string>
,或者创建此类字典,则可以使用JavaScriptSerializer实现此目的不同。