Chi*_*tan 6 c# asp.net json.net deserialization
我目前正在使用json.net!我知道如何反序列化json数据以及如何映射我们的类.现在我渴望一些疑问!
假设我的jsonstrings是
"attributes":{
"color":"Brown",
"condition":"Used",
"currency":"USD",
"price":"10500",
"price_display":"$10,500",
}
Run Code Online (Sandbox Code Playgroud)
和我的属性类(我想在其上反序列化字符串)是
Public class Attribute
{
public string name{ get; set; }
public string value{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我使用以下代码进行反序列化.
JavaScriptSerializer ser = new JavaScriptSerializer();
<classname> p = ser.Deserialize<classname>(jsonString);
Run Code Online (Sandbox Code Playgroud)
显然,这段代码根本不适用于上面的jsonstring.
现在如何在一个类中绑定这些名称值对?这可能吗 ?
将来,属性可能超过10但格式将与名称值对相同
小智 1
编辑:我很抱歉,但不知何故,我将你的问题解释为好像你想要序列化,而不是反序列化(但无论如何我都会将原始内容保留在下面,因为我认为这是很好的知识:))。
尝试将您的 JSON 字符串反序列化为Dictionary<string,string>而不是您的Attribute. 我有预感它可能会起作用。然后,您可以调整其余代码以使用该字典,或者可以转换为实例的集合Attribute。
原始答案(与序列化有关,与您要求的相反)如下。
我不这么认为,但如果目的是以这种方式在客户端上使用它:
attributes["color"] // returns Brown
attributes["price"] // returns 10500
Run Code Online (Sandbox Code Playgroud)
...那么您所追求的称为“关联数组”,因为它相当于:
attributes.color
attributes.price
Run Code Online (Sandbox Code Playgroud)
...因为它并不是真正的数组,而是一个对象(javascript提供了这两种方法来引用对象属性;egwindow.onload与 相同window["onload"])...
...如果您序列化为 JSON 字符串,您可以使用 JavaScriptSerializer 来实现此目的Dictionary<string,string>(换句话说,将您的Attribute类更改为KeyValuePair<string,string>,或者以其他方式创建此类字典)。
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |