return '{"response" : "' + responseMsg + '" , "isNewAUser" : "' + isNewUser + '"}';
标记为c# string too many characters in character literal
..与单引号和双引号有关但是我想要返回...
{
"response": "This is a response Msg Eg",
"isNewAUser": "false"
}
答案 0 :(得分:2)
理想的方法是使用序列化库,例如NewtonSoft.Json提供的序列化库:
var x = new { response = responseMessage, isNewAUser = isNewUser } ;
var s = JsonConvert.SerializeObject(x);
Console.WriteLine(s);
输出:
{"response":"Hello world!","isNewAUser":false}
如果您坚持使用字符串操作来执行此操作,则可以通过以下几种方式执行此操作。
普通字符串:
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