我有一些json数据存储在一个文本文件中(数据在https://github.com/VinceG/Auto-Cars-Makes-And-Models)。我已经通过已生成以下类存储反序列化一个没有json.net的json文本文件
public class Model
{
public string value { get; set; }
public string title { get; set; }
}
public class VehicleMake
{
public string value { get; set; }
public string title { get; set; }
public List<Model> models { get; set; }
}
我尝试使用下面的代码deserialise数据到VehicleMake类
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Let's deserialise!");
var sb = new StringBuilder();
using (var sr = new StreamReader("models.json"))
{
string line;
while ((line = sr.ReadLine()) != null)
sb.AppendLine(line);
}
var vehicleList = Deserialize<VehicleMake>(sb.ToString());
Console.WriteLine("Done");
}
private static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
try
{
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(ms);
ms.Close();
return obj;
}
}
catch (Exception ex)
{
Console.WriteLine("Exception throw in Deserialize - {0}-{1}", ex.Message, ex.StackTrace);
return obj;
}
}
}
我用json2csharp运行JSON文件这在许多不同的项目中都是反序列化的方法,并且它从来没有引起过问题。虽然它将空值返回到vehicleList
对象中。
字符串builder.ToString()看起来包含所有的数据(它显示了最后的冠军这是正确的其他的Yugo模型)我故意不使用json.net,因为它是
我只是在这个应用程序中执行json的反序列化,所以它有点矫枉过正。
我应该说,这不是一个作业项目或类似的东西
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx – 2014-11-04 17:01:27
不幸的是,目标平台无法访问JavascriptSerialiser类 – Nodoid 2014-11-04 17:07:01