2010-08-20 62 views
1

我宁愿使用Microsofts System.Runtime.Serialization.Json.DataContractJsonSerializer 来序列化JSON中的对象,所以我不必引用任何第三方程序集。DataContractJsonSerializer或JsonTextWriter数组

我想将数组序列化成JSON字符串。可能只有1个数组,其他每个条目都是名称,其他则是数值。 例如[ "name1", "value1", "name2", "value2" ]

我希望序列化,以便名称和值在JSON字符串 (例如, 在.NET阵列是[ "name1", "value1", "name2", "value2" ] 变得

{ 
"name1": "value1", 
"name2": "value2" 
} 

我已经成功通过经由2个阵列循环和增加然后使用

jsonWriter.WritePropertyName(namesAndValues[i].ToString()); 
jsonWriter.WriteValue(namesAndValues[i+1]); 

我实现这与JSON.NET JsonTextWriter试图用Microsofts DataContractJsonSerializer做同样的事情,但它似乎没有相同的灵活性。 有什么方法吗?

我知道我可以使用JSON.NET源代码本身,但我宁愿使用Microsoft类,如果可能的话。

+0

你可以在DataContractJsonSerializer方面包含你想序列化为[[“name1”,“value1”,“name2”,“value2”]'的对象的类定义吗? – Oleg 2010-08-21 14:36:06

回答

2

DataContractJsonSerializer旨在将类串行化为JSON。为了得到你想要的输出类型,你将不得不序列化一个类,该类有两个名为name1和name2的属性,其值为value1和value2。 JSON的格式是否完全固定,如果您只想要一组键值对,您可以将数组转换为Dictionary<string,string>并使用DataContractJsonSerializer将其序列化。然而,你会最终得到类似的东西:

{ 
    { 
    "Key":"name1", 
    "Value":"value1" 
    }, 
    { 
    "Key":"name2", 
    "Value":"value2" 
    } 
} 

即,一组键值对。

+0

不错的一个。我已经构建了一个新的助手.net类,并返回了一个Dictionary。 [DataMember] public Dictionary Fields = new Dictionary (); – learnerplates 2010-09-01 16:01:00

相关问题