Я пытаюсь использовать пример в этой ссылке http://sharpdevpt.blogspot.com/2009/10/deserialize-json-on-c.html?showComment=1265045828773#c2497312518008004159
Но мое использование компиляции привычки проекта JavaScriptConvert. DeserializeObject, пример говорит, что это из библиотеки .NET, кто-либо знает который?
Я знаю, что пример ниже использует Newtonsoft. Json....
Для простого способа десериализации http://blogs.msdn.com/rakkimk/archive/2009/01/ 30 / asp-net-json-serialization-and-deserialization.aspx
JavaScriptSerializer js = new JavaScriptSerializer();
Person p2 = js.Deserialize<classtype>(str);
Serializer JavaScript в .NET является частью System.Web.script.Serialization
пространство имен.
Вот пример метода расширения, который я использую для десериализации строк:
public static T FromJSON<T>(this string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Deserialize<T>(json);
}
, поскольку это метод расширения строки
Вы можете использовать его на любой строке.
MyCustomType = myJsonString.FromJSON<MyCustomType>();
Вы также можете захотеть Посмотрите на json.net , который является бесплатным проектом с открытым исходным кодом, и это как намного быстрее, чем встроенные .NET JSON Serializers, и это также доступно на .NET 1.x и 2.0, если вам все еще нужно поддерживать их.
Это действительно чудесное программное обеспечение! Настоятельно рекомендуется.
Ссылка, которую вы разместили, взята из моего блога, в чем проблема с ее использованием? не стесняйтесь отвечать на сообщение в блоге или напишите мне по адресу (скрыто) Я использую уже некоторое время, и он отлично работает.
Что касается обсуждаемого JavascriptSerializer, который встроен в .Net Framework, проблема в том, что этот сериализатор не сериализируется в / из List <>. Если вы хотите это сделать, вам нужно использовать Newtonsoft.JSON для этого, потому что .NET Framework просто не поддерживает его. И поскольку основное использование этого - возвращение JSON в некоторый клиентский скрипт для поиска или чего-то еще, вещь List <> просто необходима.
Но с этим фрагментом кода вы не можете десериализовать / сериализовать List <>, что очень удобно, если вы работаете с наборами результатов, и более производительно, чем встроенный .NET. JavascriptSerializer, поэтому Newtonsoft.Json является лучшим вариантом:
Для одного объекта вашего настраиваемого типа:
classtype myDeserializedObj = (classtype)JavaScriptConvert.DeserializeObject(jsonString, typeof(classtype));
Для списка объектов вашего настраиваемого типа:
List<classtype> myDeserializedObjList = (List<classtype>)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, typeof(List<classtype>));