【问题标题】:Convert JSON to String Error string literal not terminated [duplicate]将 JSON 转换为字符串错误字符串文字未终止 [重复]
【发布时间】:2019-10-10 18:24:11
【问题描述】:

当我尝试运行给定的代码时,我得到错误 :: string literal not terminate (illegal character 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\"}}}]}"

【问题讨论】:

    标签: json string go


    【解决方案1】:

    您正在使用可能不包含换行符的解释字符串文字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 上试试。

    【讨论】:

    • 如果我以字节为单位转换给定的甲酸盐结果是不同的
    • @ChandanKumar 是的,因为您的工作“单行”字符串没有换行符和缩进,但这些在 JSON 中没有意义,它代表相同的数据。您也可以从原始字符串文字中删除换行符和空格,请参阅编辑后的答案。
    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多