1. ホーム
  2. python

[解決済み] JSON ValueError: プロパティ名:1行目2列目(char 1)が必要です。

2022-02-06 08:07:37

質問

json.loadを使用して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)

エラーは最後から2番目の行で発生していることは間違いありません。

jsonTweet=json.loads({u'favorited': False, u'contributors': None})

が、どうすれば直るのかわかりません。何かアドバイスがあればお願いします。

解決方法を教えてください。

json.loads は、json文字列をpythonの dict , json.dumps は python をダンプします。 dict をjson文字列に変換するなどの方法があります。

>>> 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 パイソン dict を、そして json.loads は有効な json string を持つべきであり <type 'str'> .

そのため、jsonを読み込もうとしている場合は、読み込むものを以下のように変更する必要があります。 json_string 上記のように、ダンプしているはずです。これは与えられた情報からの私の最善の推測に過ぎません。あなたが達成しようとしていることは何ですか?

また u は、コメントで@Cldが述べているように、文字列の前に置きます。