如何在c#中传递带变量的Json字符串?

时间:2017-03-30 11:00:58

标签: c# json restsharp

string a;

string b;

string jSonContent = @"{""fields"":{""summary"":""summary"" , ""description"": ""modified.""}}";

我想要 a 而不是摘要 b 而不是修改。如果我替换摘要但是如果我替换它们则会出错。

编辑后的代码是字符串jSonContent = @" {""字段"":{""摘要" ":" +" \"" + a +" \"" +" ,""描述"":" +" \"" + b +" \"&#34 ; +"}}"; 它没有给出任何错误,摘要字段正在更新,但说明字段不是。

请还原。谢谢!

4 个答案:

答案 0 :(得分:4)

我强烈建议您使用JSON库,例如Json.Net

首先,您将能够使用强类型对象,此外,您将避免拼写错误和类似的错误,因为序列化程序将为您进行序列化。

public void Test()
{
    string a = ""; //content of 'a' variable
    string b = ""; //content of 'b' variable

    var obj = new RootObject();
    obj.Fields = new Fields();

    obj.Fields.Summary = a;
    obj.Fields.Description = b;

    var jsonOutput = Newtonsoft.Json.JsonSerializer.Serialize(obj, typeof(RootObject));
}

public class Fields
{
    [JsonProperty("summary")]
    public string Summary { get; set; }

    [JsonProperty("description")]
    public string Description { get; set; }
}

public class RootObject
{
    [JsonProperty("fields")]
    public Fields Fields { get; set; }
}

注意:如果您不想创建不必要的类型,可以直接使用JObject,这是可能的用途之一:

var jobj = Newtonsoft.Json.Linq.JObject.FromObject(new {
    fields = new {
        summary = a,
        description = b
    }
});
var jsonOutput = jobj.ToString();

答案 1 :(得分:-1)

您可以使用string.Format或string.concate方法

string jSonContent = string.Concat("{\"fields\":{\"summary\":","\"",a,"\" , \"description\": \"",b,"\"}}");

答案 2 :(得分:-1)

string a = "a";
string b = "b";

string jSonContent = (@"{""fields"":{""summary"":""summary"" , ""description"": ""modified.""}}").Replace(@":""summary""", a).Replace("modified.", b);

答案 3 :(得分:-1)

使用字符串fromat $""

字符串格式允许您将变量中的值替换为字符串。 E.g。

string name = "Bruno";
string result = $"My name is {name}";
Console.WriteLine(result);

输出

My name is Bruno

在你的情况下,你只需要用双括号{{

来逃避json括号
string a = "this is a sumary";
string b = "this is a description";
string jSonContent = $"{{\"fields\":{{\"summary\":\"{a}\" , \"description\": \"{b}\"}}}}";

Console.WriteLine(jSonContent);

输出

{"fields":{"summary":"this is a sumary" , "description": "this is a description"}}

但是我强烈建议不要手动构建你的json字符串,使用Json.NET或任何其他NuGet包。