c# - 如何在c#中将json格式字符串转换为json
问题描述
我正在获取存储在数据库中的 json 格式的字符串,现在我想将其转换为 json 格式。我该如何转换它请帮助。
var labelnames = @"{'LabelName':'LabelName1','IsHeader':true},{'LabelName':'LabelName2','IsHeader':false},{'LabelName':'LabelName3','IsHeader':true},{'LabelName':'LabelName4','IsHeader':false}";
我想将上面的代码转换为正确的 json 格式
解决方案
这是一个无效的 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;
}
推荐阅读
- android - 标签显示错误的标题
- java - Spring 状态机操作如何工作
- angular - 为什么使用 Angular CLI 构建的 Angular 应用程序会在 github 上发出安全警告,我该如何解决?
- regex - Reg.ex 模式匹配在 postgresql 中不起作用
- java - 可以使用接口的默认方法来描述行为吗?
- javascript - JS 媒体查询不适用于 svg 元素
- azure-powershell - 是否可以一次为多个订阅创建 Azure 警报?
- python - Django rest框架自定义过滤器后端数据重复
- haskell - 运算符(例如 +)的行为更像是 curried 函数还是带有一对元组类型参数的函数?
- cmake - 如何以执行另一个目标的二进制产品为条件构建一个目标?