c# - 导入后错误操作 C# JSON 数据
问题描述
你好(我是菜鸟,所以如果我使用了错误的术语,请纠正我),
我尝试使用 StreamReader 导入的 JSON 文件有问题,如下所示:
public List<Category> Items;
try
{
using (var r =
new StreamReader(
FilePath1)
)
{
var json = r.ReadToEnd();
Items = JsonConvert.DeserializeObject<List<Category>>(json);
}
}
catch (Exception e)
{
MessageBox.Show(Convert.ToString(e), "Error");
Environment.Exit(1);
}
这个确切的代码以前对我有用,并且列表应该包含以下数据:
[
{
"name": "Elektronik",
"subcategories": [
{
"name": "Elektrotechnische Physik",
"questions": [
{
**"question": "Wie ändert sich die Anzahl der freien Elektronen vor und nach dem Schließen eines Stromkreises innerhalb eines Leiters?"**,
"answer": "Die Anzahl bleibt gleich.",
"answers": [
"Die Anzahl verringert sich.",
"Die Anzahl bleibt gleich.",
"Die Anzahl erhöht sich.",
"Es gibt keine freien Elektronen in einem Leiter."
]
}, .....
粗体部分是有问题的部分,因为该列表实际上包含以下数据:
[
{
"name": "Elektronik",
"subcategories": [
{
"name": "Elektrotechnische Physik",
"questions": [
{
**"SubQuestion": null**,
"answer": "Die Anzahl bleibt gleich.",
"answers": [
"Die Anzahl verringert sich.",
"Die Anzahl bleibt gleich.",
"Die Anzahl erhöht sich.",
"Es gibt keine freien Elektronen in einem Leiter."
]
},
它删除所有问题并将其替换为“SubQuestion = null”。有谁知道为什么或知道如何帮助我?
谢谢!
解决方案
看起来您的 json 中的属性名称与模型中的属性名称不匹配。您的模型可能如下所示......除了 Question,它似乎有一个名为“SubQuestion”而不是“question”的属性。如果这是您的意图,正如 Colin 所提到的,您可以在其上放置一个 json 属性,以便可以将 json 映射到正确的属性。
public class Category
{
public string name { get; set; }
public Subcategory[] subcategories { get; set; }
}
public class Subcategory
{
public string name { get; set; }
public Question[] questions { get; set; }
}
public class Question
{
public string question { get; set; }
public string answer { get; set; }
public string[] answers { get; set; }
}
推荐阅读
- java - 读取不同编码格式的文本文件时指定字节的目的
- r - 根据唯一的文件名提取目录中的特定文件并在 R 中使用 read_wav 读取它们
- python - Python setuptools:将脚本安装为符号链接?
- asp.net-web-api - 在执行当前 Web 请求期间不断出现未处理的异常
- java - 使用一元运算符时出现意外类型错误 --
- reactjs - 更改收音机输入时如何更改标签的样式?
- informix - 带括号和不带括号含义的 Imformix sql 'outer'
- python-3.x - pyodbc 执行两个依赖过程
- angular - Angular HTTPClient 更改了响应数据中的指定字符串
- ruby-on-rails - 从 ssh 私有 EC2 我无法连接到我的 aws RDS Postgres 数据库