具有一个属性或基本Json数据类型的Json对象?

具有一个属性或基本Json数据类型的Json对象?,json,rest,Json,Rest,我正在构建一个创建资源的RESTAPI。资源只有一个属性,这是一个相当长且唯一的字符串。我计划将这些数据作为JSON发送到API。将数据建模为JSON有两种选择 基本JSON字符串数据类型 具有一个字符串属性的JSON对象 这两种选择都有效 在这种情况下,这两个选项中哪一个是首选的?为什么?返回的基本答案 我个人会使用选项2,即:`一个带有一个字符串属性的JSON对象' 另外,在设计方面:我更喜欢返回一个具有键/值的对象。键也是一个名称,它提供了返回内容的上下文 只返回一个字符串,基本上是一个“

我正在构建一个创建资源的RESTAPI。资源只有一个属性,这是一个相当长且唯一的字符串。我计划将这些数据作为JSON发送到API。将数据建模为JSON有两种选择

  • 基本JSON字符串数据类型
  • 具有一个字符串属性的JSON对象
  • 这两种选择都有效

    在这种情况下,这两个选项中哪一个是首选的?为什么?

    返回的基本答案 我个人会使用选项2,即:`一个带有一个字符串属性的JSON对象'

    另外,在设计方面:我更喜欢返回一个具有键/值的对象。键也是一个名称,它提供了返回内容的上下文

    只返回一个字符串,基本上是一个“”或{“”}缺少该上下文(返回变量的名称)

    辩论:基本字符串是Json对象吗? 对于字符串本身是否是有效的JSON文档,似乎也存在一些混淆

    这种混乱和争论在以下提到各种技术规格的帖子中非常明显:

    唯一可以确定的是,带有键值对的JSON对象绝对有效!

    至于字符串本身..我不确定(需要更多的阅读)

    更新:回答创建/更新实体(Post/Put) 在上面的特定案例中,关于这样一个“运行到几千字节”的大字符串……我的感觉是这将包含在请求主体中

    在发送数据的特定上下文中,我实际上可以使用1或2。此外,1似乎更优化(如果您的框架支持的话),因为关于数据是什么的上下文与rest API方法相关

    但是,如果将来需要再添加一个参数,则必须使用具有多个键的JSON实体。

    返回的基本答案 我个人会使用选项2,即:`一个带有一个字符串属性的JSON对象'

    另外,在设计方面:我更喜欢返回一个对象,它有一个键/值。键也是一个名称,它提供了返回内容的上下文

    只返回一个字符串,基本上是一个“”或{“”}缺少该上下文(返回变量的名称)

    辩论:基本字符串是Json对象吗? 对于字符串本身是否是有效的JSON文档,似乎也存在一些混淆

    这种混乱和争论在以下提到各种技术规格的帖子中非常明显:

    唯一可以确定的是,带有键值对的JSON对象绝对有效!

    至于字符串本身..我不确定(需要更多的阅读)

    更新:回答创建/更新实体(Post/Put) 在上面的特定案例中,关于这样一个“运行到几千字节”的大字符串……我的感觉是这将包含在请求主体中

    在发送数据的特定上下文中,我实际上可以使用1或2。此外,1似乎更优化(如果您的框架支持的话),因为关于数据是什么的上下文与rest API方法相关


    但是,如果将来需要再添加一个参数,则必须使用具有多个键的JSON实体。

    JSON标准只允许数组和对象处于顶层。回答得很好!@Evert感谢您澄清这一点!我正在阅读stackoverflow帖子中的讨论,这有点混乱啊哈哈:我真的要收回它。我想确定一下,但事实证明RFC确实允许顶级的一切:@Evert这太烦人了,以至于他们似乎已经改变了主意。@MenelaosBakopoulos。我只是想澄清一下……我指的是作为API输入发送的JSON数据。在这种情况下,资源中心我认为,e本身将设置数据的上下文。例如,如果资源是电子邮件(即API端点是/email)数据是.PUT/email/可能有意义。但正如我所说的,因为我的案例中的数据是一个运行到几千字节的字符串,所以我无法对它进行建模。因此,我正在寻找替代选项JSON标准只允许数组和对象处于顶层。回答得很好!@Evert感谢您澄清这一点!我正在阅读这方面的讨论stackoverflow post和它的一点混合啊哈哈:我实际上收回了它。我想确定一下,但事实证明RFC确实允许顶级的一切:@Evert这太令人讨厌了,他们似乎已经改变了主意。@MenelaosBakopoulos。我只是想澄清一下……我指的是JSON数据,它是t作为API的输入。我认为,在这种情况下,资源本身将设置数据内容的上下文。例如,如果资源是电子邮件(即API端点是/email)数据是.PUT/email/会有意义的。但正如我所说的,因为我的案例中的数据是一个运行到几千字节的字符串,所以我无法对其进行建模。因此,我正在寻找其他选项