这可能在JSON中吗?

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>,或者以其他方式创建此类字典)。