首页 > 解决方案 > Json.loads() 字符串,表示具有 unicode 值的字典

问题描述

我有一个命令行工具,它接受代表字典的字符串并运行流量

warp_cli -j '{"warp_ip":"172.18...

Robot Framework 正在生成这些字典的一部分并注入 unicode 键u'TCP'。如果有一个 unicode 键被传递给我得到的字典:

ValueError: No JSON object could be decoded

例子:

import json

streams = [
    {
        "burst_loop_count": "500",
        "protocol": u"TCP",
        "tcp_src_port": "10000",
    },
    {
        "burst_loop_count": "500",
        "protocol": u"TCP",
        "tcp_src_port": "10000"
    }
]

def _create_streams_arg(streams):
    return str(streams).replace("'", '"')

print(json.loads(_create_streams_arg((streams))))

有没有办法:将映射str(x) or x.encode("ascii", "ignore")到所有值,Streams或者有没有办法json.loads()正确加载包含 unicode 的东西?

我得到了它的工作:

def _encode(streams):
    encoded = []
    for stream in streams:
        encoded.append({str(k): str(v) for k, v in stream.iteritems()})
    return encoded

但我希望可能有一个更清洁的解决方案

标签: pythonjson

解决方案


推荐阅读