Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么json.dumps()和json.loads()会生成unicode字符串?_Python_Json_Unicode - Fatal编程技术网

Python 为什么json.dumps()和json.loads()会生成unicode字符串?

Python 为什么json.dumps()和json.loads()会生成unicode字符串?,python,json,unicode,Python,Json,Unicode,{'created_at':datetime.datetime(2018,5,25,13,35,11),'tweet': “RT@KKRiders:Mavi将在预选赛中打出第一球2.萨哈 罢工。我们走吧!\n\n#SRHvKKR#teesravar#krhaitaiyar“,“id”: 100000737131764736,“序列”:1} 这是我的字符串,我需要json格式 def myconverter(o): if isinstance(o, datetime.datetime):

{'created_at':datetime.datetime(2018,5,25,13,35,11),'tweet': “RT@KKRiders:Mavi将在预选赛中打出第一球2.萨哈 罢工。我们走吧!\n\n#SRHvKKR#teesravar#krhaitaiyar“,“id”: 100000737131764736,“序列”:1}

这是我的字符串,我需要json格式

def myconverter(o):
    if isinstance(o, datetime.datetime):
        return o.__str__()
messageRead = json.dumps(message.value, default = myconverter)
messageRead = json.loads(messageRead)
print messageRead
print type(messageRead)

您的json无效。要解决此问题,请首先修改字符串:

  • datetime.datetime(2018,5,25,13,35,11)
    不是有效字符串。您可以将其作为字符串进行读取和传递,并在加载后对其进行解析
  • 删除
    \n
  • 替换为
    (Python支持
    ,但JSON不支持afaik)
  • JSON中也不允许使用“
    \”
您的字符串可以如下所示以便读取:

{“创建时间”:“datetime.datetime(2018,5,25,13,35,11)”, “推特”:“RT@KKRiders:Mavi将在预选赛2中打出第一个球。 萨哈罢工,我们走吧!#SRHvKKR#teesravar#krhaitaiyar#,“id”: 100000737131764736,“顺序”:1}

要检查json是否有效,请使用:


请参阅此处的JSON RFC以了解JSON支持的内容:

您的JSON无效。若要解决此问题,请首先修改您的字符串:

  • datetime.datetime(2018,5,25,13,35,11)
    不是有效字符串。您可以将其作为字符串读取并传递,然后在加载后对其进行分析
  • 删除
    \n
  • 替换为
    (Python支持
    ,但JSON不支持afaik)
  • JSON中也不允许使用“
    \”
您的字符串可以如下所示以便读取:

{“创建时间”:“datetime.datetime(2018,5,25,13,35,11)”, “推特”:“RT@KKRiders:Mavi将在预选赛2中打出第一个球。 萨哈罢工,我们走吧!#SRHvKKR#teesravar#krhaitaiyar#,“id”: 100000737131764736,“顺序”:1}

要检查json是否有效,请使用:

请参阅此处的JSON RFC以了解JSON支持什么:

这就是python2.7中的工作方式。 最简单的方法是切换到。如果你想坚持python2.7,你可以使用object\u pairs\u钩子

import datetime
import json


message = {
   'created_at': datetime.datetime(2018, 5, 25, 13, 35, 11),
   'tweet': "RT @KKRiders: Mavi to bowl the first ball of #Qualifier2. Saha on strike. Let's go!\n\n#SRHvKKR #TeesraVaar #KKRHaiTaiyaar",
   'id': 1000007371131764736,
   'sequence': 1}
def myconverter(o):
    if isinstance(o, datetime.datetime):
        return o.__str__()

def object_pairs_hook(pairs):
    new_pairs = []
    for key, value in pairs:
        if isinstance(value, unicode):
            try:
                value = datetime.datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
            except:
                value = value.encode('utf-8')
        if isinstance(key, unicode):
            key = key.encode('utf-8')
        new_pairs.append((key, value))
    return dict(new_pairs)


messageRead = json.dumps(message, default = myconverter)
messageRead = json.loads(messageRead, object_pairs_hook=object_pairs_hook)
print messageRead
请注意,如果要将列表和字典用作值,必须修改对象\u pairs\u hook,这就是python2.7中的工作方式。 最简单的方法是切换到。如果你想坚持python2.7,你可以使用object\u pairs\u钩子

import datetime
import json


message = {
   'created_at': datetime.datetime(2018, 5, 25, 13, 35, 11),
   'tweet': "RT @KKRiders: Mavi to bowl the first ball of #Qualifier2. Saha on strike. Let's go!\n\n#SRHvKKR #TeesraVaar #KKRHaiTaiyaar",
   'id': 1000007371131764736,
   'sequence': 1}
def myconverter(o):
    if isinstance(o, datetime.datetime):
        return o.__str__()

def object_pairs_hook(pairs):
    new_pairs = []
    for key, value in pairs:
        if isinstance(value, unicode):
            try:
                value = datetime.datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
            except:
                value = value.encode('utf-8')
        if isinstance(key, unicode):
            key = key.encode('utf-8')
        new_pairs.append((key, value))
    return dict(new_pairs)


messageRead = json.dumps(message, default = myconverter)
messageRead = json.loads(messageRead, object_pairs_hook=object_pairs_hook)
print messageRead
请注意,如果要将列表和字典用作值,必须修改对象\u pairs\u hook