相关疑难解决方法(0)

是否保留了JSON列表中元素的顺序?

我注意到JSON对象中元素的顺序不是原始顺序.

那些JSON列表的元素呢?他们的订单是否保持?

javascript arrays json list

223
推荐指数
4
解决办法
13万
查看次数

有没有什么方法可以正确地打印有序的词典?

我喜欢Python中的pprint模块.我经常使用它进行测试和调试.我经常使用width选项来确保输出在我的终端窗口中很好地适应.

它一直运行良好,直到他们在Python 2.7中添加了新的有序字典类型(我非常喜欢的另一个很酷的功能).如果我试着漂亮地打印一个有序的字典,它就不能很好地显示出来.而不是将每个键值对放在它自己的行上,整个事物显示在一条长行上,它包含很多次并且难以阅读.

这里有没有人有办法让它打印得很好,就像旧的无序词典一样?如果我花了足够的时间,我可能会想出一些东西,可能使用PrettyPrinter.format方法,但我想知道这里是否有人知道解决方案.

更新:我为此提交了一份错误报告.您可以在http://bugs.python.org/issue10592上看到它.

python pretty-print ordereddictionary python-2.7 pprint

91
推荐指数
6
解决办法
5万
查看次数

如何在Orthon3中将OrderedDict转换为常规字典

我正在努力解决以下问题:我想转换OrderedDict如下:

OrderedDict([('method', 'constant'), ('data', '1.225')])
Run Code Online (Sandbox Code Playgroud)

成为这样的常规字典:

{'method': 'constant', 'data':1.225}
Run Code Online (Sandbox Code Playgroud)

因为我必须将它作为字符串存储在数据库中.转换后,订单不再重要,所以无论如何我都可以省去订购的功能.

感谢任何提示或解决方案,

python ordereddictionary type-conversion

86
推荐指数
5
解决办法
7万
查看次数

Python中的JSON输出排序

我在python中遇到了JSON的问题.

事实上,如果我尝试执行此代码,python会给我一个排序的JSON字符串!

例如:

values = {'profile' : 'testprofile', 
          'format': 'RSA_RC4_Sealed', 
          'enc_key' : base64.b64encode(chiave_da_inviare), 
          'request' : base64.b64encode(data)
      }


values_json = json.dumps(values, sort_keys=False, separators=(',', ':'))
Run Code Online (Sandbox Code Playgroud)

这是输出:

{"profile":"testprofile","enc_key":"GBWo[...]NV6w==","request":"TFl[...]uYw==","format":"RSA_RC4_Sealed"}
Run Code Online (Sandbox Code Playgroud)

如你所见,我试图使用"sort_keys = False",但没有任何改变.

如何阻止Python对JSON字符串进行排序?

python sorting json

57
推荐指数
6
解决办法
7万
查看次数

Python json.loads改变了对象的顺序

我有一个包含JSON对象的文件.它已按以下方式加载:

with open('data.json', 'r') as input_file:
  input_data = input_file.read()
Run Code Online (Sandbox Code Playgroud)

此时input_data只包含一个字符串,现在我继续将其解析为JSON:

data_content = json.loads(input_data.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

data_content具有字符串的JSON表示,这是我需要的,但由于某些原因,在json.loads之后我不清楚它正在改变键的原始顺序,所以例如,如果我的文件包含如下内容:

{ "z_id": 312312,
  "fname": "test",
  "program": "none",
  "org": null
}
Run Code Online (Sandbox Code Playgroud)

在json.loads之后,订单被改变为让我们说:

{ "fname": "test",
  "program": None,
  "z_id": 312312,
  "org": "none"
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?有没有办法保存订单?我正在使用Python 2.7.

python json python-2.7

12
推荐指数
1
解决办法
5527
查看次数

如何在Python中创建OrderedDict?

我试图保持Python字典的顺序,因为native dict没有任何顺序.SE中的许多答案建议使用OrderedDict.

from collections import OrderedDict

domain1 = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
    "us": "United States", "no": "Norway"  }

domain2 = OrderedDict({ "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
    "us": "United States", "no": "Norway"  })

print domain1
print " "    
for key,value in domain1.iteritems():
    print (key,value)

print " "

print domain2
print ""
for key,value in domain2.iteritems():
    print (key,value)
Run Code Online (Sandbox Code Playgroud)

迭代后,我需要字典来维护其原始顺序并将键和值打印为原始:

{
    "de": "Germany",
    "sk": "Slovakia",
    "hu": "Hungary",
    "us": "United States",
    "no": "Norway"
}
Run Code Online (Sandbox Code Playgroud)

但是,我使用的任何一种方式都不会保留此顺序.

python dictionary

10
推荐指数
1
解决办法
1万
查看次数

如何将json字符串转换为字典并在键中保存顺序?

当我想将json字符串转换为Python字典时,我有问题.我有类似的字符串

 s={"name":{"Saban:Saulic"},"price":{"koncert:1000"} ....}
Run Code Online (Sandbox Code Playgroud)

当我写的东西像

tags=json.loads(s)
Run Code Online (Sandbox Code Playgroud)

我gtet字典但键的顺序与字符串不一样(它不是名字,价格......).如何将json字符串转换为字典并在键中保存顺序?

python json

8
推荐指数
1
解决办法
7826
查看次数

理解 json.loads() 中的 object_pairs_hook

在此处的文档中 - https://docs.python.org/3/library/json.html

它说object_pairs_hook

object_pairs_hook 是一个可选函数,它将使用任何用有序对列表解码的对象文字的结果调用。将使用 object_pairs_hook 的返回值而不是 dict。此功能可用于实现自定义解码器。如果还定义了 object_hook,则 object_pairs_hook 优先。

这个答案中有一个相当令人印象深刻的例子。

我不明白什么是“钩子”或者这个功能是如何工作的。文档并没有真正清楚地解释它。我现在想写一个(否则我正在解析的字符串上会出现一堆字符串方法)

有没有人知道有关此功能的教程或对其有足够的了解以详细解释它的工作原理?他们似乎在文档中假设您知道黑匣子中发生了什么json.loads()

python parsing json python-3.x

8
推荐指数
2
解决办法
7737
查看次数

Python 从 JSON 文件创建树

假设我们有以下 JSON 文件。为了示例起见,它是由字符串模拟的。字符串是输入,Tree对象应该是输出。我将使用树的图形表示法来呈现输出。

我发现以下类可以在 Python 中处理树概念:

class TreeNode(object):
    def __init__(self, data):
        self.data = data
        self.children = []

    def add_child(self, obj):
        self.children.append(obj)

    def __str__(self, level=0):
        ret = "\t"*level+repr(self.data)+"\n"
        for child in self.children:
            ret += child.__str__(level+1)
        return ret

    def __repr__(self):
        return '<tree node representation>'

class Tree:
    def __init__(self):
        self.root = TreeNode('ROOT')

    def __str__(self):
        return self.root.__str__()
Run Code Online (Sandbox Code Playgroud)

输入文件可以具有不同的复杂性:

简单案例

输入:

json_file = '{"item1": "end1", "item2": "end2"}'

输出:

"ROOT"
    item1
        end1
    item2
        end2
Run Code Online (Sandbox Code Playgroud)

嵌入式案例

输入:

json_file = {"item1": "end1", "item2": {"item3": "end3"}}

输出: …

python tree recursion json

7
推荐指数
1
解决办法
2万
查看次数

json.loads()没有保持秩序

我已将格式化我的字符串看起来像JSON我可以做到的json.loads.当我在屏幕上打印时,它结果搞砸了订单.我知道Python的dictonaries没有订购,但有没有办法保持这个顺序?我真的需要保留它.谢谢!

python json python-2.7

6
推荐指数
1
解决办法
5216
查看次数