关于单引号和双引号,太多的字符文字

时间:2018-01-03 01:18:08

标签: c#

return '{"response" : "' + responseMsg + '" , "isNewAUser" : "' + isNewUser + '"}'; 

标记为c# string too many characters in character literal ..与单引号和双引号有关但是我想要返回...

{
  "response": "This is a response Msg Eg",
  "isNewAUser": "false"
}

2 个答案:

答案 0 :(得分:2)

序列化

理想的方法是使用序列化库,例如NewtonSoft.Json提供的序列化库:

var x = new { response = responseMessage, isNewAUser = isNewUser } ;
var s = JsonConvert.SerializeObject(x);
Console.WriteLine(s);

输出:

{"response":"Hello world!","isNewAUser":false}

使用string.Format:

如果您坚持使用字符串操作来执行此操作,则可以通过以下几种方式执行此操作。

普通字符串:

var template = "{{\"response\": \"{0}\",\"isNewAUser\": \"{1}\"}}";
var s = string.Format(template, responseMessage, isNewUser);
Console.WriteLine(s);           

或者,使用允许多行的verbatim string

var template = @"
{{
    ""response"": ""{0}"",
    ""isNewAUser"": ""{1}""
}}";

var s = string.Format(template, responseMessage, isNewUser);
Console.WriteLine(s);           

使用插值字符串

如果您使用的是C#6或更高版本,则可以使用插值字符串:

var s = $@"{{ ""response"" : ""{responseMessage}"",""isNewAUser"" : ""{isNewUser}""}}";
Console.WriteLine(s);           

为了区分占位符和实际的字符串文字,以及双"需要双{。需要在字符串中转义引号。

答案 1 :(得分:2)

我建议您serialize您的对象,因此您不必格式化您的字符串,并且还可以轻松扩展响应(请参阅下面的示例,了解如何序列化对象)。 或者,使用String.Format()更简洁,例如:

string a = String.Format("{{ {0}response{0}: {0}{1}{0}, {0}isNewAUser{0}: {0}{2}{0}}}", 
                                    '"', "This is a response Msg Eg", "false"); 

使用序列化

    class ResponseData {
         string responseMsg {get; set; } 
         bool isNewUser {get; set; }
    }

因此,当您想要转换为JSON时,使用Json.NET

      ResponseData response = new ResponseData(); 
      response.responseMsg = "error";
      reponse.isNewUser = false; 
      string output = JsonConvert.SerializeObject(response);

参考:https://www.newtonsoft.com/json/help/html/SerializingJSON.htm