代码之家  ›  专栏  ›  技术社区  ›  learnerplates

数组的DataContractJSonserializer或JSontextWriter

  •  1
  • learnerplates  · 技术社区  · 15 年前

    我更喜欢使用Microsoft System.Runtime.Serialization.json.DataContractJSonserializer 要在JSON中序列化我的对象,所以我不必引用任何第三方程序集。

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

    我希望序列化,以便名称和值在JSON字符串中出现一对。 例如 .NET中的数组是 [“名称1”,“值1”,“名称2”,“值2”] 变成

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

    我使用json.net jContextWriter成功地实现了这一点,方法是循环遍历2个数组,然后使用

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

    我试图用MicrosoftsDataContractJSonserializer做同样的事情,但它似乎没有同样的灵活性。 有什么办法吗?

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   Coding Flow    15 年前

    DataContractJSonserializer旨在将类序列化为JSON。要获得所需的输出类型,必须将具有两个名为name1和name2的属性的类序列化,这些属性的值分别为value1和value2。JSON的格式是否完全固定,如果只需要一组键值对,可以将数组转换为 Dictionary<string,string> 并使用DataContractJSonserializer将其序列化。然而,你最终会得到如下的结果:

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

    即键-值对的数组。