所以我将JSON保存在文件中,让我们说test.json。我打开文件,用字符串读取里面的JSON然后我试图将它反序列化为一个对象。文件打开正确,字符串被读取(但转义符出现在字符串中),当我尝试反序列化它时,它返回对象的所有字段的空值,我不明白为什么。
以下是JSON如何保存在文件中:http://pastebin.com/Q6hdiJAD
以下是从文件中读取JSON后如何保存在我的字符串中:http://pastebin.com/HaB480Ww
以下是应该反序列化JSON的代码(我从多个文件中获取多个jsons并反序列化它们并将它们添加到列表中):
List<Root> raw = new List<Root>();
string[] files = Directory.GetFiles(HostingEnvironment.MapPath("~/Content/Files"));
foreach (string path in files)
{
using (StreamReader sr = new StreamReader(path))
{
string json = sr.ReadToEnd();
Root root = JsonConvert.DeserializeObject<Root>(json);
raw.Add(root);
}
}
这是我的班级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using APIGovApp.Models;
namespace APIGovApp.Classes
{
public class XmlModel
{
public string Staff { get; set; }
public List<Nomenclator> noms { get; set; }
}
public class Root
{
public XmlModel nom_localitati { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace APIGovApp.Models
{
public class Nomenclator
{
public int cod_jud { get; set; }
public int cod { get; set; }
public int cod_pol { get; set; }
public string denumire { get; set; }
public string cod_tpl { get; set; }
public int cod_postal { get; set; }
public string cod_sar { get; set; }
public int cod_loc_jud { get; set; }
public int loc_cod { get; set; }
public string are_primarie { get; set; }
public int cod_fiscal_primarie { get; set; }
public int cod_politie_tata { get; set; }
public string sar_cod_mf { get; set; }
public int cod_siruta { get; set; }
public int cod_siruta_tata { get; set; }
}
}
我参加比赛,我需要尽快完成比赛。请帮忙。
答案 0 :(得分:0)
在我看来,列表属性的名称并不匹配。
在代码中:
public List<Nomenclator> noms { get; set; }
在档案中:
{"NOM_LOCALITATI":{"Staff":null,"rand":
注意noms vs. rand
将noms重命名为rand,或者通过添加以下属性为解析器提供提示:
[JsonProperty(PropertyName = "rand")]
public List<Nomenclator> noms { get; set; }