我有一些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