数组的DataContractJsonSerializer或JsonTextWriter

时间:2010-08-20 16:05:23

标签: c# .net json serialization

我更喜欢使用Microsofts System.Runtime.Serialization.Json.DataContractJsonSerializer 用JSON序列化我的对象,所以我不必引用任何第三方程序集。

我正在尝试将数组序列化为JSON字符串。可能只有一个数组,每个其他条目都是名称,其他条目是值。 e.g。[ "name1", "value1", "name2", "value2" ]

我希望序列化,以便名称和值在JSON字符串中显示为一对 例如 .NET中的数组是[ "name1", "value1", "name2", "value2" ]

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

我通过循环遍历2个数组并添加到

,使用JSON.NET JsonTextWriter成功实现了这一点。
jsonWriter.WritePropertyName(namesAndValues[i].ToString());
jsonWriter.WriteValue(namesAndValues[i+1]);

我正在尝试使用Microsofts DataContractJsonSerializer做同样的事情,但它似乎没有相同的灵活性。 有什么办法吗?

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

1 个答案:

答案 0 :(得分:2)

DataContractJsonSerializer旨在将类序列化为JSON。要获得所需的输出类型,您必须序列化一个名为name1和name2的属性,其值为value1和value2。 JSON的格式是否完全修复,如果您只想要一组键值对,则可以将数组转换为使用DataContractJsonSerializer的Dictionary<string,string>和序列化。但是你会得到类似的东西:

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

即。一组键值对。