从JSON for PHP中剥离“u”

时间:2013-08-09 18:45:39

标签: php python json character-encoding

我有以下内容,我正在尝试用PHP解析

它是JSON,但带有'u'(可能是python指标,但我不确定) 将这些转换为有效JSON的最快方法是什么?或者是这个 已经有效的JSON,PHP应该能够解析?

{u'_id': u'fruit',
               u'etags': [{u'score': 3.612, u'tag': u'apple'},
                          {u'score': 1.443, u'tag': u'banana'},
                          {u'score': -0.833, u'tag': u'cherry'},
                          {u'score': -2.048, u'tag': u'orange'}]}

编辑:我在PHP中遇到“语法错误,格式错误的JSON”,所以有些东西已经关闭, 但它可能不是'你'

编辑:不是一个好的答案,但这是为我完成的诀窍:

$json = str_replace("u'", "'", $json);
$json = str_replace("'", '"', $json);

2 个答案:

答案 0 :(得分:5)

你这里做错了什么。假设你在python中有这样的东西

data = {u'_id': u'fruit',
           u'etags': [{u'score': 3.612, u'tag': u'apple'},
                      {u'score': 1.443, u'tag': u'banana'},
                      {u'score': -0.833, u'tag': u'cherry'},
                      {u'score': -2.048, u'tag': u'orange'}])

您目前正在做相当于

的事情
print repr(data)

你应该这样做:

import json
print json.dumps(data)

您要解析的字符串不是JSON,因为它:

  • u,不应该
  • 使用'代替"
  • 不会将None编码为null
  • ...

由于你不控制数据源,你别无选择,只能在输入上调用python解释器:

import ast
import json

bad_json = get_from_server()
data = ast.literal_eval(bad_json)
print json.dumps(data)

答案 1 :(得分:0)

不是一个好的答案,但这是为我做的诀窍:

$json = str_replace("u'", "'", $json);
$json = str_replace("'", '"', $json);