将JSON转换为String错误字符串文字未终止

时间:2019-05-24 07:26:48

标签: json string go

当我尝试运行给定的代码时,出现错误::字符串文字未终止(非法字符U + 005C'\')。如何修复给定的代码?

payload := "{
    \"key_id\":\"3\",
    \"contacts\":[
        {
            \"external_id\":\"chandan4u1990@gmail.com\",
            \"data\":{
                \"global\":{
                    \"name\":\"Adoni Mishra\"
                }
            }
        },
        {
            \"external_id\":\"chandankumarc@airasia.com\",
            \"data\":{
                \"global\":{
                    \"name\":\"CHANDAN KUMAR\"
                }
            }
        }
    ]
}"

当我将所有行合并在一起时,它开始工作::

payload := "{\"key_id\":\"3\",\"contacts\":[{\"external_id\":\"chandan4u1990@gmail.com\",\"data\":{\"global\":{\"name\":\"Adoni Mishra\"}}},{\"external_id\":\"chandankumarc@airasia.com\",\"data\":{\"global\":{\"name\":\"CHANDAN KUMAR\"}}}]}"

1 个答案:

答案 0 :(得分:0)

您使用的是解释的字符串文字,其中可能不包含换行符! Spec: String literals:

  

解释的字符串文字是双引号之间的字符序列,例如"bar"。在引号内,任何字符都可能显示除换行符和未转义的双引号。

使用原始字符串文字,这样您甚至不必转义引号,它将更具可读性,并且在原始字符串文字中允许使用换行符:

  

原始字符串文字是反引号之间的字符序列,例如foo。在引号内,除反引号外,任何字符都可能出现。

例如:

    payload := `{
    "key_id":"3",
    "contacts":[
        {
            "external_id":"chandan4u1990@gmail.com",
            "data":{
                "global":{
                    "name":"Adoni Mishra"
                }
            }
        },
        {
            "external_id":"chandankumarc@airasia.com",
            "data":{
                "global":{
                    "name":"CHANDAN KUMAR"
                }
            }
        }
    ]
}`

如果不需要缩进,也可以将所有内容放在一行中:

payload := `{"key_id":"3","contacts":[{"external_id":"chandan4u1990@gmail.com","data":{"global":{"name":"Adoni Mishra"}}},{"external_id":"chandankumarc@airasia.com","data":{"global":{"name":"CHANDAN KUMAR"}}}]}`

Go Playground上尝试。