使用 C# 字典序列化 json 查询字符串



所以我正在使用字典类将C#序列化为JSON。

我正在尝试序列化到这个字符串

 { "User":{ "$inQuery":{ "where":{ "firstName":"plf.UserName" } } }

我正在尝试用一组嵌套的词典来组装它。这样。。

var dict4 = new Dictionary<string, string>() { {"firstName", plf.UserName} };
var dict3 = new Dictionary<string, Dictionary<string, string>>() { { "where", dict4 } };
var dict2 = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>() { { "$inQuery", dict3 } };
var dict1 = new Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, string>>>>() {{ "User", dict2 } };

当然,这不可能是最好的方法。

我怎样才能做这个清洁工?

您可以使用匿名类来定义 JSON 结构,如下所示:

var json = JsonConvert.SerializeObject(
    new
    {
        User = new
        {
            inQuery = new
            {
                where = new {firstName = plf.UserName}
            }
        }
    });

但是,请注意,我必须从$inQuery中删除$才能正常工作,因为 C# 标识符不能包含美元符号。

您可以重写 JSON.Net 将用于属性的名称,但不能使用匿名类执行此操作 - 您必须定义一个命名类:

class JsonUser
{
    [JsonProperty("$inQuery")]
    public object inQuery { get; set; }
}

然后你像这样使用它:

var json = JsonConvert.SerializeObject(
    new
    {
        User = new JsonUser
        {
            inQuery = new
            {                            
                where = new { firstName = plf.UserName}
            }
        }
    });

最新更新