将json转成灵活的类,使用JObject,JToken
文心给我的介绍是
JObject
JObject 代表一个 JSON 对象,它是一个键值对的集合,其中键是字符串,值是 JToken 类型(可以是另一个 JObject、JArray、基本数据类型等)。
使用场景:
当你需要解析 JSON 字符串并访问其属性时。
当你需要构建或修改一个 JSON 对象时。
JToken
JToken 是 JObject、JArray、JValue 等所有 JSON 数据类型的基类。它提供了一个统一的接口来访问和操作 JSON 数据,无论数据的具体类型是什么。
使用场景:
当你需要处理不确定类型的 JSON 数据时。
当你需要在 JSON 数据结构中导航时(例如,遍历数组或嵌套对象)。
由于 JObject 继承自 JToken,因此 JObject 可以出现在任何需要 JToken 的地方。
=========================================================================
我遇到的实际问题是, 我有一个别人传给我的json,我需要给他转成一个类进行操作, 但是json中想表达的是一个表格的信息
可能是
`[
{
"fileName": "Project_System1",
"table": {
"Atable": {
"labels": [
{
"value": "ACol",
"text": "A",
"width": 50
},
{
"value": "BCol",
"text": "B",
"width": 20
},
{
"value": "CCol",
"text": "C",
"width": 30
},
{
"value": "Dcol",
"text": "D",
"width": 50
}
],
"data": [
{
"ACol": "test1",
"BCol": "Uv",
"CCol": "2 co",
"Dcol": "1.0mm² "
},
{
"ACol": "Cen",
"BCol": "Uh",
"CCol": "2 co",
"Dcol": "1.5mm² "
},
{
"ACol": "Out",
"BCol": "Uc",
"CCol": "2 co",
"Dcol": "1000m"
},
{
"ACol": "Re",
"BCol": "A,B",
"CCol": "2 co",
"Dcol": "0500m"
}
],
"note": "NoteLocal, National and International .",
"tableStyle": "divider"
},
"Btable": {
"labels": [
{
"value": "name",
"text": "Name",
"width": 40
},
{
"value": "modelName",
"text": "Model Name",
"width": 50
},
{
"value": "qty",
"text": "Quantity",
"width": 30
}
],
"data": [
{
"name": "OUT",
"modelName": "1V",
"qty": "1"
},
{
"name": "In",
"modelName": "4",
"qty": "1"
},
{
"name": "Indoor Unit",
"modelName": "40",
"qty": "2"
},
{
"name": "Bh",
"modelName": "RE",
"qty": "1"
}
],
"tableStyle": "table"
}
}
}
]
分析下这个结构,Atable中是有四列的,Btable中有3列
这样的不确定,我不能写一个固定字段的类来接收这样灵活的数据
所以想使用JObject,但是遇到的问题是wcf数据转换, 不支持,就先把这样灵活的数据转到一个字典中, 然后再转到Jobject中
if (dic != null)
{
foreach (var kvp in dic)
{
if (kvp.Value.ToString().Length > 2)
{
JToken jToken = JToken.FromObject(kvp.Value);
legends.Add(jToken);
}
}
}
这样就转成了灵活的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?