c# - 将 json(javascript 对象)反序列化为 c# 对象
问题描述
我有以下 javascript 对象,它看起来像 json,但是当我将其解析为 json 时出现错误:
{
"1": {
"name": "Manheim Simulcast ",
"items": {
"2": {
"pos": "52",
"name": "NY - Manheim Albany",
"address": "",
"zip": "12201",
"coords": ""
}
}
}
}
和以下课程:
public class auction_js_min
{
public auction_id auction_id { set; get; }
}
public class auction_id
{
public string name { set; get; }
public Items items { set; get; }
}
public class Items
{
public Sub_auction_id sub_auction_id { set; get; }
}
public class Sub_auction_id
{
public string pos { get; set; }
public string name { get; set; }
public string address { get; set; }
public string zip { get; set; }
public string coords { get; set; }
}
当我将它反序列化为 C# 对象时,我得到了空对象:
auction_js_min obj = JsonConvert.DeserializeObject<auction_js_min>(auction_js);
知道如何解决吗?javascript 对象太大 87000 符号,我想遍历对象并检查值。
解决方案
我认为您在这里遇到的是您的对象已编号,并且您不能仅用编号命名一个类。在这种情况下,您的模型与您的 JSON 不匹配,因此您将得到的只是空值。您需要修改您的模型以匹配您拥有的 JSON,然后您可以将该 DTO 模型映射到更好地在 C# 中使用的东西。
这是一个反序列化 JSON 的示例模型:
public class auction_id
{
public string name { set; get; }
public IDictionary<int, Sub_auction_id> items { set; get; }
}
public class Sub_auction_id
{
public string pos { get; set; }
public string name { get; set; }
public string address { get; set; }
public string zip { get; set; }
public string coords { get; set; }
}
然后像这样反序列化:
public void Deserialize()
{
var auction = JsonConvert.DeserializeObject<IDictionary<int, auction_id>>(json);
}
推荐阅读
- php - Wordpress自定义帖子类型如何在单个帖子中显示分类描述
- excel - 处理注册表中的 TypeGuessRows
- spring-ws - 如何为 spring-ws 出站网关指定属性 checkConnectionForFault?
- android - 在 jCenter 弃用后,我还能使用依赖于 jCenter 的 android 库吗?
- python - Discord.py 机器人不读取 cog
- html - CSS 溢出属性不适用于导航栏链接
- python - Python中的多线程文件传输?
- python - URL Django 中的 Python 正则表达式
- python - PRAW 提到循环时不显示
- java - 如何管理将 Java 类的第二作者作为评论包含在内的更好方法?