【问题标题】:XML vs JSON for saving data [duplicate]用于保存数据的 XML 与 JSON [重复]
【发布时间】:2018-04-16 13:27:57
【问题描述】:

首先是一些背景知识,我正在用 C# 编写一个应用程序,它允许用户通过参数和窗口位置轻松指定一系列程序、命令或网站,然后单击启动它们。我正在尝试决定使用 XML 或 JSON 对用户文件进行编码是否更好。

这是我对数据结构的初步设计:

XML

<AutoLauncher>
    <Program>
        <Location>C:\example.exe</Location>
        <Arguments>
            <Argument>
                <Key>a</Key>
                <Value>true</Value>
            </Argument>
        </Arguments>
        <Position>
            <Monitor>1</Monitor>
            <X>0</X>
            <Y>0</Y>
        </Position>
    </Program>
    <Cmd>
        <Command>example</Command>
        <Arguments>...</Arguments>
        <Position>...</Position>
    </Cmd>
    <Website>
        <Url>www.example.com</Url>
        <Browser>Default</Browser>
        <Arguments>...</Arguments>
        <Position>...</Position>
    </Website>
</AutoLauncher>

JSON

{
  Programs: [
    { Location: "C:\example.exe",
      Arguments: [
        {Key: "a", Value: true}
      ],
      Position: {
        Monitor: 1,
        X: 0,
        Y: 0
      }
    }
  ],
  Commands:[
    { Command: "example",
      Arguments:[...],
      Position: {...}
  ],
  Websites: [
    { Url: "www.example.com",
      Browser: "default",
      Arguments: [...],
      Position: {...}
  ]
}

注意:我在命令和网站的参数和位置中使用了 ...,因为结构与程序结构完全相同。

哪种数据结构最好(或者还有其他更好的)?

【问题讨论】:

标签: c# json xml wpf data-structures


【解决方案1】:

肯定会在其他链接中介绍,但您的 XML 示例与您的 JSON 示例基本相同。使用 JSON,这几乎就是您所得到的。使用 XML,您可以更具表现力。例如:

<!-- My AutoLauncher Settings : Last updated 2018-04-16 -->
<AutoLauncher>

    <Program Location="C:\example.exe" Monitor="1" X="0" Y="0">
        <Arguments>
            <Argument Key="a" Value="true" />
        </Arguments>
    </Program>

    <!-- Temporarily disable this one. I'll fix later.
    <Cmd Command="example" Monitor="1" X="0" Y="0">
        <Arguments>...</Arguments>
        <Position>...</Position>
    </Cmd>
    -->

    <!-- I want to launch this because... -->
    <Website Url="www.example.com" Browser="Default" Monitor="1" X="0" Y="0">
        <Arguments>...</Arguments>
    </Website>
</AutoLauncher>

JSON 有它的用途。但是对于配置(特别是用户管理的),我更喜欢 XML。

【讨论】:

  • 我认为您可以使用 xml 做更多事情,但目前我对它还很陌生。还有一点需要注意的是,xml不是用户直接写的,而是生成的,我想用一个fui,让不懂任何编码(或xml)的人都可以使用。
【解决方案2】:

JSON 的结构很直观,无论使用何种编程语言,都可以轻松阅读并直接映射到领域对象。

【讨论】:

  • 直觉是主观的。人们可以对 XML 提出相同的论点。基于您习惯使用的。此外,XML 数据可以直接映射到域对象,其方式与映射 JSON 数据的方式几乎完全相同(通过使用属性属性或手动处理(反)序列化)。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 2012-01-14
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多