最佳实践json?

时间:2010-12-14 04:29:21

标签: json spring rest spring-mvc

当使用Spring rest服务器端生成json时,它将如下所示

{"userInfo":{"id":123,"userFullName":"full name"}}    with nested 'userInfo'

应该json生成这种方式是考虑最佳实践还是应该生成如下所示

没有嵌套'userinfo'的

{"id":88,"userFullName":"dfXXXXXXXXXX"}

我问的原因是,如果我使用现有技术,在我的客户端,我需要提取用户信息作为JSONObject然后只能获取json数据。哪种方式更好?

4 个答案:

答案 0 :(得分:4)

这就像问这两个xml fragmetns之间哪个更好:

<userinfo>
  <id></id>
  <username></username>
</userinfo>

<id></id>
<username></username>

我更喜欢第一种格式,因为它更具可读性,但当然,第二种格式产生的数据更少。最佳做法是拥有可维护的代码。就像 yoda 回答

一样
  

“从代码mantainer的角度来看,   我会选择第一个选项“

答案 1 :(得分:2)

从维护的角度来看,我会选择第一个选项,因为后面可能需要额外的信息。除此之外,没有太大区别。

答案 2 :(得分:2)

我不相信任何一种解决方案普遍比另一种解决方案更正确。我认为更合适的解决方案在很大程度上取决于背景。

话虽如此,在我看来,虽然你提到的第一个解决方案需要更多的处理,但它也提供了更多的灵活性。 JSON非常适合表示数据层次结构和结构。如果您想添加更多数据或结构,我相信第一个解决方案(使用嵌套的userInfo)可以更顺利地处理转换。

例如,假设您想要支持多个用户的信息,那么您需要做的唯一切换就是让userInfo包含多个userInfo对象的JSON数组。为了更进一步,假设您还希望完全包含一组新数据 - 比如locationInfo - 您可以从嵌套层次结构中分离出这两个不同类别的数据。

最终,我认为正确的解决方案是最适合您的应用程序环境的解决方案,但我鼓励您在如何处理您的设计并尝试预测如何在未来。

只是值得深思。

祝你好运!

答案 3 :(得分:1)

JSON的核心原则是提供在JavaScript中使用的“面向对象”符号。如果你坚持这一点,我觉得你的第一个构造,嵌套userInfo是一个更合适的结构。否则,在第二种情况下,您最终将不得不从其他字段数据构建userInfo对象。