【问题标题】:serialize / deserialise jaon array key value pair序列化/反序列化 json 数组键值对
【发布时间】:2019-08-10 19:17:44
【问题描述】:

我正在寻找构造一个 C# 对象来生成以下 JSON 数组:

["Key":"SomeKeyValue", "Key":"SomeKeyValue"]

使用列表为我提供了我想要的数组,但在生成的 Json 中有一个对象名称:

Public Class SomeOtherClass
{
    public string Key {get; set;}
}

Public Class SomeObject
{
    public List<SomeOtherClass> PropertyName { get; set; }
}

// JSON
{"PropertyName":[ {"Key":"SomeValue"} ] }

我需要在生成的 JSON 中删除对象的名称。使用字典给了我我所追求的东西,但使用 JSON 中的 Object 语法 {} 而不是 Array []:

{
  ...
}

尽可能避免自定义序列化程序和合同。我确定NewtonSoft在这里一定有一些神奇的属性?

在网上找到了一些相关的问题,但没有解决删除属性名称的问题。有什么建议吗?

【问题讨论】:

  • 您无法生成此 JSON 数组,因为它甚至不是有效的 JSON 数组。
  • 将此示例转换为 Dictionary 会使两个“Key”值发生冲突,因此我认为转换为 List 可能会更好。见:stackoverflow.com/questions/39999420/…
  • 需要匹配XML版本:&lt;ClassName&gt; &lt;!--Zero or more repetitions:--&gt; &lt;key&gt;value&lt;/key&gt; &lt;/ClassName&gt;
  • JSON 数组没有键,只有值。见json.org

标签: c# serialization json.net deserialization


【解决方案1】:

从 XML 到 JSON 的转换器,从 XML 的转换:

<ClassName>
    <!--Zero or more repetitions:-->
    <key>value1</key>
    <key>value2</key>
    <key>value3</key>
</ClassName>

具有 JSON 等价物:

"ClassName": {
    "key": [
        "value1",
        "value2",
        "value3"
    ]
}

暂时使用它,直到我可以在更多需要集成的第 3 方系统上对其进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多