मुझे एक और समस्या का सामना करना पड़ा जो समान त्रुटि देता है।
एकल उद्धरण मुद्दा
मैंने सिंगल कोट्स के साथ json string का उपयोग किया :
{
'property': 1
}
लेकिन json.loads
json गुण के लिए केवल दोहरे उद्धरण स्वीकार करता है :
{
"property": 1
}
अंतिम अल्पविराम मुद्दा
json.loads
अंतिम अल्पविराम स्वीकार नहीं करता है:
{
"property": "text",
"property2": "text2",
}
समाधान: ast
एकल उद्धरण और अंतिम अल्पविराम मुद्दों को हल करने के लिए
आप ast
इस प्रसंस्करण के लिए पायथन 2 और 3 दोनों के लिए मानक पुस्तकालय का हिस्सा उपयोग कर सकते हैं । यहाँ एक उदाहरण है :
import ast
# ast.literal_eval() return a dict object, we must use json.dumps to get JSON string
import json
# Single quote to double with ast.literal_eval()
json_data = "{'property': 'text'}"
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property": "text"}
# ast.literal_eval() with double quotes
json_data = '{"property": "text"}'
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property": "text"}
# ast.literal_eval() with final coma
json_data = "{'property': 'text', 'property2': 'text2',}"
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property2": "text2", "property": "text"}
का उपयोग करना ast
आपको एकल उद्धरण और अंतिम कॉमा मुद्दों से रोक देगा जैसे कि JSON जैसे पायथन डिक्शनरी (ताकि आप पायथन डिक्शनरी सिंटैक्स का पालन करें)। यह eval()
शाब्दिक संरचनाओं के लिए फ़ंक्शन का एक बहुत अच्छा और सुरक्षित विकल्प है ।
पायथन प्रलेखन ने हमें बड़े / जटिल स्ट्रिंग का उपयोग करने की चेतावनी दी:
चेतावनी पाइथन के एएसटी कंपाइलर में स्टैक की गहराई सीमाओं के कारण पर्याप्त रूप से बड़े / जटिल स्ट्रिंग के साथ अजगर दुभाषिया को क्रैश करना संभव है।
json.dumps सिंगल कोट्स के साथ
json.dumps
आसानी से एकल उद्धरणों का उपयोग करने के लिए आप इस कोड का उपयोग कर सकते हैं:
import ast
import json
data = json.dumps(ast.literal_eval(json_data_single_quote))
ast
प्रलेखन
Ast Python 3 doc
ast Python 2 डॉक
साधन
यदि आप अक्सर JSON को संपादित करते हैं, तो आप CodeBeautify का उपयोग कर सकते हैं । यह आपको सिंटैक्स त्रुटि को ठीक करने और JSON को छोटा / सुंदर बनाने में मदद करता है।
मुझे उम्मीद है यह मदद करेगा।
"
है कि एक कॉपी पेस्ट त्रुटि?