У меня есть некоторые данные json, хранящиеся в текстовом файле (данные находятся в https://github.com/VinceG/Auto-Cars-Makes-And-Models). Я запустите файл JSON через json2csharp породившее следующие классы для храненияDeserialising текстовый файл json без json.net
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;
}
}
}
Я использовал этот метод десериализации в ряде различных проектов и никогда не вызывал проблемы. Здесь, хотя он возвращает null в объект vehicleList
.
Строка builder.ToString() выглядит, чтобы содержать все данные (он показывает Другие модели Yugo для окончательного названия, которое является правильным)
Я намеренно не используя json.net, как это только десериализация json, которую я делаю в этом приложении, и поэтому она несколько завышена.
я должен сказать, что это не домашнее задание проекта или что-нибудь подобное
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx –
К сожалению, целевая платформа не имеет доступа к JavascriptSerialiser класс – Nodoid