C# 如何在字符串中输入双引号

C# 如何在字符串中输入双引号,c#,json,string,double-quotes,C#,Json,String,Double Quotes,我有一段代码,我试图输入双引号,我的代码如下 resulted_value = "{series_name : \"" + final_resulted_series_name + "\",period_name: \"" + period_name + "\",period_final_value: \"" + period_final_value + "\"}"; 在这里,每次显示结果\时,我都使用了“\”+变量+\”和@“变量”,但我没有得到所需的输出。任何帮助都将不胜感激 ------

我有一段代码,我试图输入双引号,我的代码如下

resulted_value = "{series_name : \"" + final_resulted_series_name + "\",period_name: \"" + period_name + "\",period_final_value: \"" + period_final_value + "\"}";
在这里,每次显示结果\时,我都使用了“\”+变量+\”和@“变量”,但我没有得到所需的输出。任何帮助都将不胜感激

------------------------编辑1-------------------- 我得到以下输出

["{series_name : \"Actual\",period_name:Q1 / 2013\",period_final_value:17\"}","\"{series_name : \\\"Actual\\\",period_name:Q1 / 2013\\\",period_final_value:17\\\"}\"","{series_name : \"Actual\",period_name:Q2 / 2013\",period_final_value:15\"}","\"{series_name : \\\"Actual\\\",period_name:Q2 / 2013\\\",period_final_value:15\\\"}\"","{series_name : \"Actual\",period_name:Q3 / 2013\",period_final_value:13\"}","\"{series_name : \\\"Actual\\\",period_name:Q3 / 2013\\\",period_final_value:13\\\"}\"","{series_name : \"Actual\",period_name:Q1 / 2013\",period_final_value:14.103\"}","\"{series_name : \\\"Actual\\\",period_name:Q1 / 2013\\\",period_final_value:14.103\\\"}\"","{series_name : \"Actual\",period_name:Q2 / 2013\",period_final_value:14.404499999999999\"}","\"{series_name : \\\"Actual\\\",period_name:Q2 / 2013\\\",period_final_value:14.404499999999999\\\"}\"","{series_name : \"Actual\",period_name:Q3 / 2013\",period_final_value:14.966999999999999\"}","\"{series_name : \\\"Actual\\\",period_name:Q3 / 2013\\\",period_final_value:14.966999999999999\\\"}\"","{series_name : \"Actual\",period_name:Q1 / 2013\",period_final_value:15.67\"}","\"{series_name : \\\"Actual\\\",period_name:Q1 / 2013\\\",period_final_value:15.67\\\"}\"","{series_name : \"Actual\",period_name:Q2 / 2013\",period_final_value:16.005\"}","\"{series_name : \\\"Actual\\\",period_name:Q2 / 2013\\\",period_final_value:16.005\\\"}\"","{series_name : \"Actual\",period_name:Q3 / 2013\",period_final_value:16.63\"}","\"{series_name : \\\"Actual\\\",period_name:Q3 / 2013\\\",period_final_value:16.63\\\"}\"","{series_name : \"Alarm\",period_name:Q1 / 2013\",period_final_value:17\"}","\"{series_name : \\\"Alarm\\\",period_name:Q1 / 2013\\\",period_final_value:17\\\"}\"","{series_name : \"Alarm\",period_name:Q2 / 2013\",period_final_value:15\"}","\"{series_name : \\\"Alarm\\\",period_name:Q2 / 2013\\\",period_final_value:15\\\"}\"","{series_name : \"Alarm\",period_name:Q3 / 2013\",period_final_value:13\"}","\"{series_name : \\\"Alarm\\\",period_name:Q3 / 2013\\\",period_final_value:13\\\"}\"","{series_name : \"Alarm\",period_name:Q1 / 2013\",period_final_value:14.103\"}","\"{series_name : \\\"Alarm\\\",period_name:Q1 / 2013\\\",period_final_value:14.103\\\"}\"","{series_name : \"Alarm\",period_name:Q2 / 2013\",period_final_value:14.404499999999999\"}","\"{series_name : \\\"Alarm\\\",period_name:Q2 / 2013\\\",period_final_value:14.404499999999999\\\"}\"","{series_name : \"Alarm\",period_name:Q3 / 2013\",period_final_value:14.966999999999999\"}","\"{series_name : \\\"Alarm\\\",period_name:Q3 / 2013\\\",period_final_value:14.966999999999999\\\"}\"","{series_name : \"Alarm\",period_name:Q1 / 2013\",period_final_value:15.67\"}","\"{series_name : \\\"Alarm\\\",period_name:Q1 / 2013\\\",period_final_value:15.67\\\"}\"","{series_name : \"Alarm\",period_name:Q2 / 2013\",period_final_value:16.005\"}","\"{series_name : \\\"Alarm\\\",period_name:Q2 / 2013\\\",period_final_value:16.005\\\"}\"","{series_name : \"Alarm\",period_name:Q3 / 2013\",period_final_value:16.63\"}","\"{series_name : \\\"Alarm\\\",period_name:Q3 / 2013\\\",period_final_value:16.63\\\"}\"","{series_name : \"Target\",period_name:Q1 / 2013\",period_final_value:17\"}","\"{series_name : \\\"Target\\\",period_name:Q1 / 2013\\\",period_final_value:17\\\"}\"","{series_name : \"Target\",period_name:Q2 / 2013\",period_final_value:15\"}","\"{series_name : \\\"Target\\\",period_name:Q2 / 2013\\\",period_final_value:15\\\"}\"","{series_name : \"Target\",period_name:Q3 / 2013\",period_final_value:13\"}","\"{series_name : \\\"Target\\\",period_name:Q3 / 2013\\\",period_final_value:13\\\"}\"","{series_name : \"Target\",period_name:Q1 / 2013\",period_final_value:14.103\"}","\"{series_name : \\\"Target\\\",period_name:Q1 / 2013\\\",period_final_value:14.103\\\"}\"","{series_name : \"Target\",period_name:Q2 / 2013\",period_final_value:14.404499999999999\"}","\"{series_name : \\\"Target\\\",period_name:Q2 / 2013\\\",period_final_value:14.404499999999999\\\"}\"","{series_name : \"Target\",period_name:Q3 / 2013\",period_final_value:14.966999999999999\"}","\"{series_name : \\\"Target\\\",period_name:Q3 / 2013\\\",period_final_value:14.966999999999999\\\"}\"","{series_name : \"Target\",period_name:Q1 / 2013\",period_final_value:15.67\"}","\"{series_name : \\\"Target\\\",period_name:Q1 / 2013\\\",period_final_value:15.67\\\"}\"","{series_name : \"Target\",period_name:Q2 / 2013\",period_final_value:16.005\"}","\"{series_name : \\\"Target\\\",period_name:Q2 / 2013\\\",period_final_value:16.005\\\"}\"","{series_name : \"Target\",period_name:Q3 / 2013\",period_final_value:16.63\"}","\"{series_name : \\\"Target\\\",period_name:Q3 / 2013\\\",period_final_value:16.63\\\"}\""]

我想消除\并希望“”中的每个值,以便可以在进一步的代码中读取和使用。

将输出写入控制台窗口,引号可以很好地转义。您可能正在调试器中查看,这将保留
\
斜杠

string final_resulted_series_name = "foo";
string period_name = "bar";
string period_final_value = "foobar";
string resulted_value = "{series_name : \"" + final_resulted_series_name + "\",period_name: \"" + period_name + "\",period_final_value: \"" + period_final_value + "\"}";

Console.Write(resulted_value);
给出:

{系列名称:“foo”,句点名称:“bar”,句点最终值:“foobar”}

正如Marc所指出的,这可能不是构造json字符串的最佳方法。我建议使用json序列化程序

如果正在使用,可以使用
jsonvert
方法:

JsonConvert.SerializeObject(obj);
如果没有,您可以使用以下选项:

public virtual string ToJson()
{
    string json = null;
    using (MemoryStream ms = new MemoryStream())
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(this.GetType());
        ser.WriteObject(ms, this);
        json = Encoding.UTF8.GetString(ms.ToArray());
    }

    return json;
}
您应该将对象标记为使用
DataContract
,并且可以
序列化
来使用它

[DataContract]
[Serializable]
输出:

您可以使用“斜杠”来转义“双引号”

或者在字符串前使用“@”并使用双“双引号”

请记住,如果您在调试器中检查字符串,您仍将看到代码中显示的字符串(即,包括转义斜杠或双引号)。

如果您不确定,我建议您使用序列化程序来构建该字符串。例如:

var obj = new {
    series_name = final_resulted_series_name,
    period_name,
    period_final_value 
};
var json = JsonConvert.SerializeObject(obj);
其产生(分别针对值
abc
def
ghi
):


如果您使用的是串联,那么它最终会咬到您。要手动执行此操作,您需要知道所有的编码规则、边事例和角事例。

所需的输出是什么?
\“
是摆脱双引号的正确方法。你能把你得到的结果和你想要的结果都贴出来吗?你是如何检查结果的?如果您正在调试器的
监视
局部变量
窗口中查找,则应该会看到斜杠。输出字符串看起来很好,请通过验证程序运行它:。您正在调试器中查看字符串吗?正如我在回答中所说,将字符串写入控制台窗口。我会质疑串联是否是一个好的建议,除非您确定值不能包含任何需要转义的字符。但这适用于一次只返回一个字符串。然而,我有一个字符串数组,我想从中消除字符串中的反斜杠。谢谢你advance@PrasadSS这些都与你提出的问题无关。我建议做一些激进的事情:问你想回答的问题。。。。
var obj = new {
    series_name = final_resulted_series_name,
    period_name,
    period_final_value 
};
var json = JsonConvert.SerializeObject(obj);
{"series_name":"abc","period_name":"def","period_final_value":"ghi"}