如何同时使用字符串插值和逐字字符串来创建 JSON 字符串文字?

问题描述 投票:0回答:3

我正在尝试创建一个表示 JSON 对象数组的字符串文字,因此我想到使用字符串插值功能,如下面的代码所示:

    public static void MyMethod(string abc, int pqr)
    {
        string p = $"[{{\"Key\":\"{abc}\",\"Value\": {pqr}  }}]";
    }

现在我想到使用逐字字符串,这样我就不必使用反斜杠转义双引号。所以我通过this答案知道逐字字符串和字符串插值可以一起使用。所以我改变了我的代码如下:

public static void MyMethod(string abc, int pqr)
{
    string p = $@"[{{"Key":"{abc}","Value": {pqr} }}]";
}

但是编译失败。如果我的用法有任何问题,谁能帮助我,或者在这种情况下使用 C# 的字符串逐字功能无法转义双引号?

c# .net string string-interpolation verbatim-string
3个回答
15
投票
JSON 序列化器

,因为它们具有与转义字符和其他内容相关的内置处理。请参阅此处 但是,如果我们只想通过此路径手动创建 JSON 字符串,那么可以通过将内部双引号更改为单引号来解决:

public static string MyMethod(string abc, int pqr) { string p = $@"[{{'Key':'{ abc}','Value': {pqr} }}]"; return p; }



1
投票

Dictionary<string, string> values = new Dictionary<string, string>(); values.Add("key1", "value1"); values.Add("key2", "value2"); string json = JsonConvert.SerializeObject(values); // { // "key1": "value1", // "key2": "value2" // }

您可以在这里看到更多详细信息:
http://www.newtonsoft.com/json/help/html/SerializingCollections.htm


1
投票

这是我之前编写的一些代码,用于将字典转换为 JSON 字符串。它非常基本,只接受字符串类型,并且不会转义任何名称/值中的引号,但这可以相当容易地完成。

如果您尝试从基本类型序列化大型 JSON 字符串,这是我建议的方法。它会帮助你保持理智。

private static string DictToJson(Dictionary<string, string> Dict) { var json = new StringBuilder(); foreach (var Key in Dict.Keys) { if (json.Length != 0) json = json.Append(",\n"); json.AppendFormat("\"{0}\" : \"{1}\"", Key, Dict[Key]); } return "{" + json.ToString() + "}"; }

© www.soinside.com 2019 - 2024. All rights reserved.