【问题标题】:How to validate a JSON string with escaped quotes using Python如何使用 Python 验证带有转义引号的 JSON 字符串
【发布时间】:2020-01-03 16:33:26
【问题描述】:

我正在使用 json.loads 来解析 JSON 字符串。但是,当它包含转义的双引号时,它会将字符串标识为无效的 JSON。由于字符串本身是有效的,我如何在不修改输入字符串的情况下正确解析它(即使用 \\" 而不是 \")。这是我的代码:

import json 

a = '{"name":"Nickname \"John\" Doe", "age":31, "Salary":25000}'

print ("initial strings given - \n", a) 

try: 
    json_object1 = json.loads(a) 

    print ("Is valid json? true") 

except ValueError as e: 
    print ("Is valid json? false") 

谢谢!

【问题讨论】:

  • 但是,该字符串中的 所有 引号是否都被有效地转义了,无论它们前面是否有“\”? '"\"' 的计算结果与 '""' 相同。
  • json 从字典生成 JSON 会更简单:a = json.dumps(dict(name='Nickname "John" Doe', age=31, Salary=25000))

标签: python json validation parsing


【解决方案1】:

由于反斜杠本身是一个转义字符,您需要对其进行转义,或者使用原始字符串(只需使用r 前缀):

a = '{"name":"Nickname \\"John\\" Doe", "age":31, "Salary":25000}'

a = r'{"name":"Nickname \"John\" Doe", "age":31, "Salary":25000}'

【讨论】:

    【解决方案2】:

    它的\ 需要转义才能使json 有效:

    #soJsonEscapeQuotes
    
    import json 
    
    a = '{"name":"Nickname \\"John\\" Doe", "age":31, "Salary":25000}'
    
    print ("initial strings given - \n", a) 
    
    try: 
        json_object1 = json.loads(a) 
    
        print ("Is valid json? true") 
    
    except ValueError as e: 
        print ("Is valid json? false")
    
    

    输出:

    initial strings given - 
     {"name":"Nickname \"John\" Doe", "age":31, "Salary":25000}
    Is valid json? true
    

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 2015-10-27
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 2015-12-02
      • 2012-04-13
      • 2016-04-25
      • 2019-08-09
      相关资源
      最近更新 更多