我在使用json.loads转换为dict对象时遇到麻烦,我无法弄清楚我在做什么错。我得到的确切错误是
ValueError: Expecting property name: line 1 column 2 (char 1)
这是我的代码:
from kafka.client import KafkaClient from kafka.consumer import SimpleConsumer from kafka.producer import SimpleProducer, KeyedProducer import pymongo from pymongo import MongoClient import json c = MongoClient("54.210.157.57") db = c.test_database3 collection = db.tweet_col kafka = KafkaClient("54.210.157.57:9092") consumer = SimpleConsumer(kafka,"myconsumer","test") for tweet in consumer: print tweet.message.value jsonTweet=json.loads(({u'favorited': False, u'contributors': None}) collection.insert(jsonTweet)
我很确定错误发生在第二行到最后一行
jsonTweet=json.loads({u'favorited': False, u'contributors': None})
但我不知道该如何解决。任何意见,将不胜感激。
json.loads将json字符串加载到python中dict,json.dumps将python转储dict到json字符串中,例如:
json.loads
dict
json.dumps
>>> json_string = '{"favorited": false, "contributors": null}' '{"favorited": false, "contributors": null}' >>> value = json.loads(json_string) {u'favorited': False, u'contributors': None} >>> json_dump = json.dumps(value) '{"favorited": false, "contributors": null}'
所以那行是不正确的,因为您正在尝试load使用python dict,并json.loads期望json string应该有一个有效的<type 'str'>。
load
json string
<type 'str'>
因此,如果您尝试加载json,则应更改要加载的内容,使其类似于json_string上面的内容,否则应将其转储。根据给定的信息,这只是我的最佳猜测。您想要完成什么?
json_string
同样,您也不需要u在字符串前指定,就像注释中提到的@Cld一样。
u