【问题标题】:C# escape double quotes not working as expectedC# 转义双引号未按预期工作
【发布时间】:2016-11-23 12:09:41
【问题描述】:

我试图在 C# 中转义字符串中的双引号,但事情并没有像我预期的那样工作。我的代码如下所示:-

public JObject GetIndicatorsAsJSON()
{

    String Test = "";

    foreach (var ARow in db.IPMSApp_TestGridView)
    {
        Test += ",{ \"indicator\" : \"" + ARow.indicator + "\", \"type\": \"" + ARow.type + "\\"}";
    }

    Test = "[" + Test.Substring(1, Test.Length - 1) + "]"; //Strip out first comma

    JObject json = JObject.Parse(Test);

    return json;
}

当我尝试运行它时,我得到一个错误(我有点预料到),但是在检查控制台窗口中的“测试”变量的内容时,我发现,而不是像预期的那样看到双引号 (因为我已经逃脱了它们),而是看到了“\”。

例如 - 我的测试字符串变量的输出应该是这样的(为了提问而简化):-

[{ "indicator" : "Activity - First" }]

但它看起来像这样:-

[{ \"indicator\" : \"Activity - First\" }]

我在转义双引号方面做错了吗?我尝试使用逐字字符串文字,但仍然遇到同样的问题。

【问题讨论】:

  • 不,没关系,这就是控制台输出带有转义引号的字符串的方式。你的 JSON 错误是什么?
  • 您似乎将 [] 包裹在一个数组中,您是否尝试过 JArray.Parse(Test); 代替?
  • 从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:StartArray。路径'',第 1 行,位置 1。
  • 我用 [ ] 包裹起来,因为我认为那是我应该做的。如果我删除这些,我会得到以下信息:- 阅读完 JSON 内容后遇到的附加文本:,。路径 '',第 1 行,位置 54。
  • JArray.Parse(Test) 完美运行...如果您作为答案发布,我会接受。

标签: c# asp.net-mvc escaping


【解决方案1】:

你引用转义并没有错,控制台只会以那种格式输出它,但这很好(尽管令人困惑)。

我预计问题在于解析 JSON。当您将对象包装在数组 [] 中时,您应该改用以下内容:

JArray json = JArray.Parse(Test);

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多