Любая идея о том, как это сделать? Если это невозможно, то какая хорошая библиотека JSON для С#?
Использование System.Json для проектов, отличных от Silverlight?
Ответ 1
Json.NET - отличная библиотека .NET json. Поддерживает LINQ, чтение/запись и преобразование объектов в json и из него.
Ответ 2
System.Json
теперь доступен в проектах, отличных от Silverlight, через NuGet (система управления пакетами .Net) и, надеюсь, будет выпущенный как часть основной структуры в vnext. Пакет NuGet называется JsonValue.
Представьте, что мы имеем следующий JSON в строковой переменной json
:
[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}]
Мы можем записать значение "еще одна строка" на консоль, используя следующий код:
using System.Json;
dynamic jsonObj = JsonValue.Parse(json);
var node = jsonObj[1].b;
System.Console.WriteLine(node.Value);
Ответ 3
Если вы просто ищете кодирование/декодирование JSON, есть официальная библиотека расширения System.Web от Microsoft, которая делает это, скорее всего, вы уже имеете эту сборку (System.Web.Extensions):
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
Пример:
using System;
using System.Web.Script.Serialization;
class App
{
static void Main(string[] args = null)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
String sJson = "{\"Name\": \"Your name\"}";
DesJson json = jss.Deserialize<DesJson>(sJson);
Console.WriteLine(json.Name);
}
}
class DesJson {
public string Name {get; set;}
}
Ответ 4
Здесь используется метод extenstion для сериализации любого экземпляра объекта в JSON:
public static class GenericExtensions
{
public static string ToJsonString<T>(this T input)
{
string json;
DataContractJsonSerializer ser = new DataContractJsonSerializer(input.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, input);
json = Encoding.Default.GetString(ms.ToArray());
}
return json;
}
}
Вам нужно добавить ссылку на System.ServiceModel.Web для использования DataContractSerializer.
Ответ 5
Скотт Гатри писал об этом
Ответ 6
Другой вариант - использовать Mono-реализацию System.Json, Мне удалось выполнить резервное копирование на С# 2.0 с небольшими изменениями.
https://github.com/mono/mono/tree/master/mcs/class/System.Json/System.Json