Используете System.Json для не-Silverlight проектов? - PullRequest
10 голосов
/ 22 апреля 2009

Есть идеи, как это сделать? Если это невозможно, что такое хорошая библиотека JSON для C #?

Ответы [ 6 ]

15 голосов
/ 18 августа 2011

System.Json теперь доступен в не-Silverlight проектах через NuGet (система управления пакетами .Net) и, как мы надеемся, будет выпущен как часть базовой инфраструктуры vnext. Пакет NuGet называется JsonValue .

Представьте, что у нас есть следующий JSON в строковой переменной json:

[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}]

Мы можем получить запись значения "another bar" в консоль, используя следующий код:

using System.Json;
dynamic jsonObj = JsonValue.Parse(json);
var node = jsonObj[1].b;
System.Console.WriteLine(node.Value);
7 голосов
/ 22 апреля 2009

Json.NET - это отличная библиотека .NET json. Поддерживает LINQ, чтение / запись и преобразование объектов в и из json.

0 голосов
/ 20 ноября 2014

Другой вариант - использовать реализацию Mono System.Json, Мне удалось перенести его в C # 2.0 с небольшими изменениями.

Вы можете просто загрузить мой проект C # 2.0 с здесь .

0 голосов
/ 09 октября 2009
0 голосов
/ 22 апреля 2009

Вот метод расширения для сериализации любого экземпляра объекта в 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.

0 голосов
/ 22 апреля 2009

Если вы просто ищете кодировку / декодирование 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;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...