【问题标题】:JSON - How can I send this JSON without an error [closed]JSON - 如何发送此 JSON 而不会出现错误 [关闭]
【发布时间】:2020-07-24 08:07:16
【问题描述】:

我的 JSON 有问题。我想将它发送到 REST-API 服务,但总是出错。

JSON(用 C# 编写):

var json = "{" +
                          "\"nachname\":\"Rindberger\","+
                          "\"anmerkung\":{"+
                                    "\"type\":\"multipart\"," +
                                    "\"content\":[ {" +
                                                "\"contentType\":\"application/pdf name=\"jakob.pdf\","+
                                                "\"contentDisposition\":\"attachment filename=\"jakob.pdf\","+
                                                "\"data\":\"" + file + "\"," +
                                                "\"contentTransferEncoding\":\"base64\"" +
                                                "}" +
                                    "]" +
                                    "}" +
                          "}";

我知道这个 JSON 看起来很乱,但也许有人知道为什么这个 json 不起作用。

我在 JSON 格式化程序中尝试了这个 JSON,出现了一条错误消息,但我不明白这个错误消息的含义。

JSON 格式化程序:

我希望有人可以帮助我。提前致谢!

【问题讨论】:

  • 您确定像name=\"jakob.pdf\" 这样的文件名必须用引号括起来吗?尝试删除它们并再次测试您的代码。
  • 我经常发现在代码中使用单引号 ' 并在其上添加字符串 Replace('\'', '"') 会更容易。它使 JSON 在 .cs 文件中更易于阅读。
  • 您一开始就缺少大量 EOL 逗号
  • 从第 7 行开始,您的 json 无效。您的“contentType”值包含非转义引号。如果要在该值中使用引号,则必须对其进行转义。这是一个显示如何转义引号的线程:How to escape double quotes in JSON

标签: c# arrays json


【解决方案1】:

您在 name=\"jakob.pdf\"filename=\"jakob.pdf\" 中缺少一些 json 的转义和引号。

var json = "{" +
                      "\"nachname\":\"Rindberger\"," +
                      "\"anmerkung\":{" +
                                "\"type\":\"multipart\"," +
                                "\"content\":[ {" +
                                            "\"contentType\":\"application/pdf; name=\\\"jakob.pdf\\\"\"," +
                                            "\"contentDisposition\":\"attachment; filename=\\\"jakob.pdf\\\"\"," +
                                            "\"data\":\"" + "FILE" + "\"," +
                                            "\"contentTransferEncoding\":\"base64\"" +
                                            "}" +
                                "]" +
                                "}" +
                      "}";

有效的 json 应该如下所示:

{
   "nachname":"Rindberger",
   "anmerkung":{
      "type":"multipart",
      "content":[
         {
            "contentType":"application/pdf; name=\"jakob.pdf\"",
            "contentDisposition":"attachment; filename=\"jakob.pdf\"",
            "data":"FILE",
            "contentTransferEncoding":"base64"
         }
      ]
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-09
    • 2016-12-27
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多