【问题标题】:How to write the JSON inside <span> tag in c# file?如何在 c# 文件中的 <span> 标记内写入 JSON?
【发布时间】:2017-02-24 07:00:56
【问题描述】:
StringBuilder sb = new StringBuilder();
sb.Append("<span data-date-conv='{"+"dstring"+":"+eventPage.StartDate.ToString()+","+"pattern"+":"+"P0"+"}'></span>");

上面的代码没有正确渲染(格式不正确),它显示为:

<span data-date-conv="{dstring:4/25/2017 12:00:00 AM,pattern:p0}"></span>

当我们写入 HTML 文件时,它会显示为(正确的格式):

<span data-date-conv='{"dstring":"4/25/2017 12:00:00 AM","pattern":"p0"}'></span>

【问题讨论】:

  • 你可以试试sb.Append("&lt;span data-date-conv='{"+"'dstring'"+":'"+eventPage.StartDate.ToString()+"',"+"'pattern'"+":"+"'P0'"+"}'&gt;&lt;/span&gt;");
  • 你应该在 ' 和 " 之前加上一个反斜杠,比如 \' 和 \"
  • 我得到了这个不正确的输出...请问还有其他解决方案吗?

标签: c# html json


【解决方案1】:

你可以这样做

sb.Append("<span data-date-conv='{\"dstring:\"" + eventPage.StartDate.ToString() + "\",\"pattern:\"P0\"}'></span>");

文字是您将字符串硬编码到 C# 程序中的方式。 C# 中有两种类型的字符串文字 - 常规字符串文字和逐字字符串文字。特别是," 本身、\ 以及回车 (CR) 和换行 (LF)) 需要“转义”才能在字符串中表示。要在字符串本身中获得“”,您需要编写“”。逐字字符串文字通过在开头引号前加上 @ 来区分。

取自Strings in C# and .NET

因此你也可以像这样尝试

sb.Append(@"<span data-date-conv='{""dstring:""" + eventPage.StartDate.ToString() + @""",""pattern"":""P0""}'></span>");

【讨论】:

  • sb.Append(@""); dstring 修改后。在 dstring 之后添加双引号。
【解决方案2】:

当我们比较第一个字符串和第二个字符串时,区别在于封装键和值的引号(“)。因此,您可以通过手动应用它们来实现您想要的,同时使用 '\' 转义字符,到你的字符串是这样的:

StringBuilder sb = new StringBuilder();
sb.Append("<span data-date-conv='{"+"\"dstring\""+":\""+eventPage.StartDate.ToString()+"\","+"\"pattern\""+":"+"\"P0\""+"}'></span>");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多