Python导出带u前缀的字典字符串在JS中转JSON报错的解决办法
Got it, let's fix that JSON parsing error you're hitting! The problem is that Python's u'...' syntax for Unicode strings isn't valid JSON—JavaScript's JSON.parse() doesn't recognize that u prefix at all. Here are two solid solutions, depending on whether you can tweak the Python side or need to handle it in JavaScript:
Instead of converting your Python dictionary to a string with str() (which spits out that Python-specific u' syntax), use Python's built-in json module to serialize the dict into standard JSON. This eliminates the u prefix entirely and guarantees the output is JavaScript-compatible.
Here's the code to do it:
import json # Your original Python dictionary my_dict = { u'aaaa': { 'name': u'a' }, u'bbbb': { 'name': u'b' }, u'cccc': { 'name': u'c' }, u'dddd': { 'name': u'd' } } # Serialize to a valid JSON string json_compatible_str = json.dumps(my_dict) # The output will look like this (no u prefixes, proper double quotes): # {"aaaa": {"name": "a"}, "bbbb": {"name": "b"}, "cccc": {"name": "c"}, "dddd": {"name": "d"}}
When you pass this string to JavaScript, you can directly run JSON.parse(json_compatible_str) without any errors—this is the cleanest approach because it avoids hacky string replacements later on.
If you can't modify the Python code and have to work with the existing string, you can clean it up before parsing. You'll need two key fixes:
- Replace Python's single quotes with JSON-required double quotes
- Strip out the
uprefixes before the quotes
Here's a quick regex-based workaround:
// Your original Python-generated string const pythonDictStr = "{ u'aaaa': { 'name': u'a' }, u'bbbb': { 'name': u'b' }, u'cccc': { 'name': u'c' }, u'dddd': { 'name': u'd' } }"; // Clean up the string to make it valid JSON const validJson = pythonDictStr .replace(/'/g, '"') // Swap all single quotes for double quotes .replace(/u"/g, '"'); // Remove the u prefix before any double quote // Now parse it safely const dict = JSON.parse(validJson); console.log(dict); // You'll get a proper JavaScript object here
⚠️ Heads up: This workaround works for simple dictionaries, but if your strings contain special characters (like single quotes or u" inside values), it might break. Always prefer the Python-side fix when possible.
内容的提问来源于stack exchange,提问作者Gandalf The Gray

