【问题标题】:How to escape JSON with string parameters如何使用字符串参数转义 JSON
【发布时间】:2022-01-16 13:16:38
【问题描述】:

我尝试使用 JSON 向我的 api 发送一个 POST 请求,它有 2 个参数,这两个参数都是字符串,但第二个参数是一个由数组组成的字符串。我使用“”,但由于格式错误,无法验证 JSON。 示例:

[
   {
      "command":"Light On",
      "electrodes_data":"[
         [
            -1.676484279858414084e+00,
            1.703593768412247300e+00,
            -2.212815768504515290e+01,
            -2.271715001249685884e+01,
            1.225172283709980547e+00,
            1.464548817242030054e+01,
            -9.198453203309327364e+00,
            1.003919234499335289e+00
         ],
         [
            2.207774024165701121e+00,
            1.350839771726168692e+01,
            -1.114531687390990555e+01,
            -1.165363114036154002e+01,
            7.126791623071767390e+00,
            1.072086845058947802e+01,
            1.251592868939042091e+00,
            8.341264304937794805e+00
         ],
         [
            7.394823959795758128e+00,
            1.485505312657915056e+01,
            -1.219862646958790720e+01,
            -1.363482670264784247e+01,
            8.551762457704171538e+00,
            1.213498147611971945e+01,
            5.537758254911750555e+00,
            9.852420400129631162e+00
         ]
      ]"
   },
   {
      "command":"Light Off",
      "electrodes_data":""[
         [
            1.093205724336439744e+01,
            1.664790142397396266e+01,
            -6.304287768318317831e+00,
            -9.288041036110371351e+00,
            1.448771805572323501e+01,
            2.803651912766508758e+01,
            2.190739106480032206e+01,
            5.626862201141193509e+00
         ],
         [
            8.181254264374729246e+00,
            1.139919802406802773e+01,
            -9.921244769473560154e+00,
            -1.219461815978866071e+01,
            5.934647234505973756e+00,
            2.065439357620198280e+01,
            1.782639012951403856e+01,
            4.578457863535732031e+00
         ],
         [
            1.189099969784729183e+01,
            1.185998179903253913e+01,
            2.910015485482290387e+00,
            1.989053226425312459e+00,
            1.672024700907059014e+00,
            2.774982235394418240e+00,
            1.299247698998078704e+01,
            6.204823252977803349e+00
         ],
         [
            2.212745977984741330e+01,
            5.191086520440876484e+00,
            3.033557224553078413e+00,
            1.221627268707379699e+00,
            1.990294787101447582e-01,
            -1.803207780583761632e+00,
            1.984525831416249275e+01,
            1.123637508391402662e+01
         ]
      ]"
   }
]

如何转义 JSON 以将第二个参数转换为字符串?

【问题讨论】:

    标签: json string escaping


    【解决方案1】:

    你有一个错误,因为它是一个 JSON 规范,你可以阅读 James Gentes 的答案:

    JSON doesn't allow breaking lines for readability.
    Are multi-line strings allowed in JSON?

    一个在线测试工具:例如Jsonlint

    您必须删除数组周围的",因为您不能在 JSON 中使用多行:

    [{
        "command": "Light On",
        "electrodes_data": [
            [
                -1.676484279858414084e+00,
                1.703593768412247300e+00,
                -2.212815768504515290e+01,
                -2.271715001249685884e+01,
                1.225172283709980547e+00,
                1.464548817242030054e+01,
                -9.198453203309327364e+00,
                1.003919234499335289e+00
            ],
            [
                2.207774024165701121e+00,
                1.350839771726168692e+01,
                -1.114531687390990555e+01,
                -1.165363114036154002e+01,
                7.126791623071767390e+00,
                1.072086845058947802e+01,
                1.251592868939042091e+00,
                8.341264304937794805e+00
            ]
        ]
    
    }, {
        "command": "Light Off",
        "electrodes_data": [
            [
                1.093205724336439744e+01,
                1.664790142397396266e+01,
                -6.304287768318317831e+00,
                -9.288041036110371351e+00,
                1.448771805572323501e+01,
                2.803651912766508758e+01,
                2.190739106480032206e+01,
                5.626862201141193509e+00
            ],
            [
                2.212745977984741330e+01,
                5.191086520440876484e+00,
                3.033557224553078413e+00,
                1.221627268707379699e+00,
                1.990294787101447582e-01,
                -1.803207780583761632e+00,
                1.984525831416249275e+01,
                1.123637508391402662e+01
            ]
        ]
    
    }]
    

    【讨论】:

    • 我尝试将数组作为字符串传递,因为我不想在我的api中使用float,这会破坏api端数据的精度,如何将其转换为字符串,有什么办法可以实现吗?
    • 那么,您可以将每个浮点数转换为字符串"-1.676484279858414084e+00", 吗?有一个字符串数组
    • 嗯,是的,我可以将其转换为字符串。这是一个很好的建议,但我已经决定使用 float,然后我将创建一个映射器,它将其转换为字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2016-04-14
    • 2021-02-19
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多