c# - 将 JObject 转换为匿名类型
问题描述
我有一个 JObject 并且想将该 JObject 格式化为一个对象。我的 JSON 搅拌是
{"Prop1":"Prop1Value","Prop2":1,"Prop3":"Prop3Value","dtProp":"2019-12-30T09:59:48"}
我希望这个 JSON 字符串被格式化为
{
Prop1 = "Prop1Value",
Prop2 = 1,
Prop3 = "Prop3Value",
dtProp = "2019-12-30T09:59:48"
}
我们应该怎么做?我的 JSON 字符串不是强类型对象。但我想把它转换成这种格式。我的 Json 字符串每次都不相同。它每次都在变化。我可以为这种情况动态创建一个对象吗?
解决方案
请注意,JSON 不是用 格式化的=
,而是用:
. 一旦它被格式化,你将无法反序列化它=
。
你可以这样做,
string newFormatted = JsonConvert.SerializeObject(JObject.Parse(json), Formatting.Indented).Replace(":", "=");
Console.WriteLine(newFormatted);
输出
{
"Prop1"= "Prop1Value",
"Prop2"= 1,
"Prop3"= "Prop3Value",
"dtProp"= "2019-12-30T09=59=48"
}
在键上不带引号打印
如果您对打印不带引号的密钥感兴趣,可以运行以下方法。此方法打破每一行并从每个键中删除引号。
string str = JsonConvert.SerializeObject(JObject.Parse(json), Formatting.Indented);
string newStr = string.Empty;
str.Split(Environment.NewLine).ToList().ForEach(line => newStr += string.Join("=", line.Split(':').Select((x, index) => index % 2 == 0 ? x.Replace(@"""", "") : x)) + Environment.NewLine);
输出
{
Prop1= "Prop1Value"
Prop2= 1
Prop3= "Prop3Value"
dtProp= "2019-12-30T09=59=48"
}
推荐阅读
- node.js - 如何将表单数据和其他附加数据从 vue 发送到节点服务器
- javascript - How I can check error from try/catch block in Jest
- android - 在同一个flutter webview中打开一个新的标签链接
- c - 从方法返回一个浮点值并尝试打印它后,打印的值总是错误的(尽管该方法确实按预期工作)
- php - 未定义的变量,从未由 __construct 设置
- r - 在数据(aml)中:未找到数据集“aml”
- html - 使用 flex 水平对齐图像和文本
- c# - 请求包含实体主体但没有 Content-Type 标头。推断的媒体类型 application/octet-stream 不支持此资源
- elasticsearch - Logstash / Elasticsearch:“无法安装模板”/“得到响应代码'400'”
- html - CSS:溢出的 HTML 表格