从输入参数构建硬编码的json字符串

时间:2016-10-19 20:08:40

标签: c#

我正在尝试使用方法中的输入参数构建硬编码的json字符串,但它似乎无效。我在这里做错了吗?

public string Test(string name, string age) 
{
    string jsonData = @"{
      ""Name"":""' + name +'"",
      ""Age"":""' + age + '""     
    }";

    return jsonData;
}

通常我会使用Json.Net,但我想知道是否有办法这样做。原因是我只会在测试中使用它而不想这么花几个小时来创建对象或匿名对象来获得这个json。有人说,这只是嘲笑数据。

2 个答案:

答案 0 :(得分:2)

可能你认为这个(或@ cactuaroid的答案)为正确一个。但事实并非如此。使用@ LB的答案......

public string Test(string name, string age)
{
    return $@"{{""Name"":""{name}"" , ""Age"":""{age}""}}";
}

假设有人将其称为var json = Test("abc\"def", "33"); ==>一个无效的json ......

修改

由于@LB删除了他的答案,我将在此处发布以供将来重新使用。

public string Test(string name, string age)
{
    return JsonConvert.SerializeObject(new { Name = name, Age = age });
}

答案 1 :(得分:-1)

jsonData只是一个字符串,没有替换或类似的东西,因为您指定了@""。我想你想要这样的东西。

string jsonData = @"{
""Name"":" + name + @""",
""Age"":" + age + @"""
}";

或者

string jsonData = "{\n" +
"\"Name\":\"" + name + "\",\n" +
"\"Age\":\"" + age + "\"\n" +
"}";

或使用string.Format()

string jsonData = string.Format(@"{{
""Name"":""{0}"",
""Age"":""{1}""
}}", name, age);

或使用占位符。

string jsonData = @"{
""Name"":""_name_"",
""Age"":""_age_""
}"
.Replace("_name_", name)
.Replace("_age_", age);