【问题标题】:Change double quotes to single quotes and order of key values pairs in json将双引号更改为单引号以及json中键值对的顺序
【发布时间】:2018-08-19 06:19:47
【问题描述】:

我有 json 输出,我想将其转换为以下格式。我正在使用 ast.literaleval,我希望按 id 和单引号中的名称排序。我使用ordered dict来获得所需的顺序,但不确定如何将双引号转换为单引号以获得所需的输出。任何帮助表示赞赏。我正在使用 Python。

json_result=[{"name":"sample name","id":77}]

desired_output=[{'id':77,'name':'sample name'}]

【问题讨论】:

  • 你应该解释为什么你想要这个。这是无效的 JSON,并且 dicts 是无序的。
  • 感谢您的评论。很抱歉无法正确解释我的问题。我想做的是更改键的顺序?如何实现?我将它转换为命令字典,但是当我将它转换回字典时。它正在恢复旧格式。
  • 当然,当您转换回常规字典时,它会失去顺序,字典对象本质上是无序的。如果您想保持秩序,请使用有序的数据结构。转换为有序数据结构并返回无序数据结构不会神奇地使无序数据结构有序。这看起来像是 collections.namedtuple 的一个很好的用例,例如
  • 你为什么使用ast.literal_eval?如果那个 JSON,那么json 不是更好的选择吗?以'True' != 'true' 为例。

标签: python json double-quotes ordereddictionary single-quotes


【解决方案1】:

你是什么意思将双引号转换为单引号?这通常只适用于包含单引号/双引号的字符串。

在这种情况下,json_result 是一个大小为 1 的 dict 列表,其中的键和值在字符串中不包含任何双引号或单引号。因此,该对象不知道您是用单引号还是双引号定义字符串。

它们在定义字符串时可以互换

例如: x = "hello" 相当于 x = 'hello'

如果你只是尝试:

json_result=[{"name":"sample name","id":77}]

print(json_result)

你得到

[{'name': 'sample name', 'id': 77}]

【讨论】:

  • 谢谢。这是有道理的。一开始我很困惑。我怎样才能得到订单更改。我想要 id 和 name。
  • @Kay 你为什么认为顺序很重要?您通过 key 而非索引从字典中获取值。
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 2017-01-17
  • 2014-10-23
  • 2019-10-04
相关资源
最近更新 更多