如何使用jsonconvert - without - key- quotes将object转换为json

本文关键字:转换 object json key- 何使用 jsonconvert without quotes | 更新日期: 2023-09-27 18:13:04

我使用jsonconvert将简单对象转换为json,如

JsonConvert.SerializeObject(new { label = "MyLabel1" });

{ "label":"MyLabel1" }

但是我想要得到没有引号的键,比如

{ label: "MyLabel1"}

是否有一种方法将对象转换为json没有"键"-引号使用json转换?

如何使用jsonconvert - without - key- quotes将object转换为json

任何需要JSON或实际JavaScript符号来创建对象(这是JSON的超集)的库都应该使用引号。

但是如果您真的想要删除它们,您可以将JsonTextWriter.QuoteName设置为false。要做到这一点,需要编写一些JsonConvert.SerializeObject()手动使用的代码:

private static string SerializeWithoutQuote(object value)
{
    var serializer = JsonSerializer.Create(null);
    var stringWriter = new StringWriter();
    using (var jsonWriter = new JsonTextWriter(stringWriter))
    {
        jsonWriter.QuoteName = false;
        serializer.Serialize(jsonWriter, value);
        return stringWriter.ToString();
    }
}

我补充回答@svick。对于保存格式,您需要使用StringBuilder来代替StringWriter。

 static string SerializeWithoutQuote(object value)
    {
        var builder = new StringBuilder();
        var serializer = JsonSerializer.Create();
        var stringWriter = new StringWriter(builder);
        using (var jsonWriter = new JsonTextWriter(stringWriter))
        {
            jsonWriter.Formatting = Formatting.Indented;
            jsonWriter.QuoteName = false;
            serializer.Serialize(jsonWriter, value);
            return builder.ToString();
        }
    }