【问题标题】:How to clarify existing json data using asp.net如何使用 asp.net 澄清现有的 json 数据
【发布时间】:2014-08-28 09:42:56
【问题描述】:

以下是我以某种方式生成的 JSON 数据:

[
  {
    id: "1926d769-319b-41ec-8bba-deabbcc44992",
    start: "2014-09-02T11:00:00",
    end: "2014-09-02T12:00:00",
    title: ""ATR" Recieved by Lender - First",
    body: ""ATR" Recieved by Lender - First",
    color: "",
    editable: false,
    officeEvent: false,
    allDay: false
  },
  {
    id: "37e65cc0-a44a-460d-acc6-f8847fcdc384",
    start: "2014-08-04T12:00:00",
    end: "2014-08-04T13:00:00",
    title: "Sign Disclosures",
    body: "Sign Disclosures",
    color: "",
    editable: false,
    officeEvent: false,
    allDay: false
  }
]

第一项titlebody包含双引号(""),这样JSON数据显示错误。现在我怎样才能同时从整个 JSON 数据中转义这个引用,如下所示。

title: "\"ATR\" Received by Lender - First"

如何在 Asp.Net C# 中实现这一点?

【问题讨论】:

  • JSON 最初是如何生成的?是您创建的,还是来自第三方?
  • @Brian Rogers,是的,它来自第三方。我在 foreach 循环中使用 title.replace("\"", "\\\"") 转义标题和正文。但是没有foreach有什么捷径吗?
  • 如果来自第三方,您应该联系他们并让他们知道他们正在创建无效的 JSON 并请求他们修复它。根据规范,必须对 JSON 字符串中的引号进行转义(参见 JSON.org)。如果没有办法做到这一点,那么你几乎只能做你现在正在做的事情来解决它。如果 JSON 无效,标准 JSON 解析器将给出错误,如本例所示。

标签: c# asp.net json


【解决方案1】:

Brian 是正确的,您确实需要与供应商交谈并让他们修复他们的数据/代码。对于不使用循环的解决方法,尽管您可以使用字符串替换方法来清除 JOSN。

string cleanJson = source.toString();
string cleanJson = cleanJson.Replace("title: \"\"", "title: \"\\\"");
string cleanJson = cleanJson.Replace("body: \"\"", "title: \"\\\"");
return convertBackToJson(cleanJson);

如果您出于性能原因不想使用循环,这可能不是更好的解决方案。如果您希望加快处理速度,请考虑尝试将 JSON 分解成碎片,如果您可以隔离虚假记录并清理它们并将它们附加到最终输出中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多