首页 > 解决方案 > 如何在c#中将json格式字符串转换为json

问题描述

我正在获取存储在数据库中的 json 格式的字符串,现在我想将其转换为 json 格式。我该如何转换它请帮助。

 var labelnames = @"{'LabelName':'LabelName1','IsHeader':true},{'LabelName':'LabelName2','IsHeader':false},{'LabelName':'LabelName3','IsHeader':true},{'LabelName':'LabelName4','IsHeader':false}";

我想将上面的代码转换为正确的 json 格式

标签: c#jsonmodel-view-controller

解决方案


这是一个无效的 JSON 格式,而且它没有包围数组括号[]理想情况下,您应该从源头解决此问题。

你可以做一个简单的替换

MyLabels = JsonConvert.DeserializeObject<List<Label>>(labelnames = "[" + labelnames.Replace("'", "\"") + "]")

但是,如果任何值还包含'.

因此,您可以创建一个自定义JsonTextReader

        using (var sw = new StringReader("[" + labelnames + "]"))
        using (var reader = new MyJsonTextReader(sw))
        {
            JsonSerializer ser = new JsonSerializer();
            MyLabels = ser.Deserialize<List<Label>>(reader);
        }
    class MyJsonTextReader : JsonTextReader
    {
        public override char QuoteChar { get; protected set; } = '\'';
        
        public MyJsonTextReader(TextReader r) : base(r){}
    }
    class Label
    {
        public string LabelName;
        public bool IsHeader;
    }

dotnetfiddle


推荐阅读