Как создать строку JSON в C#

У вас есть доступ к ПК с Windows & nbsp; 7 или к ПК с уже установленным SDK?

Если это так, самое простое решение - скопировать папку C:\Program Files\Microsoft SDKs\Windows\v7.1 с компьютера с ОС Windows & nbsp; 7. на компьютер с Windows 8.

222
задан Mark Rushakoff 28 June 2009 в 13:28
поделиться

8 ответов

Вы можете использовать класс JavaScriptSerializer , проверьте эту статью , чтобы создать полезный метод расширения.

Код из статьи:

namespace ExtensionMethods
{
    public static class JSONHelper
    {
        public static string ToJSON(this object obj)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(obj);
        }

        public static string ToJSON(this object obj, int recursionDepth)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.RecursionLimit = recursionDepth;
            return serializer.Serialize(obj);
        }
    }
}

Использование :

using ExtensionMethods;

...

List<Person> people = new List<Person>{
                   new Person{ID = 1, FirstName = "Scott", LastName = "Gurthie"},
                   new Person{ID = 2, FirstName = "Bill", LastName = "Gates"}
                   };


string jsonString = people.ToJSON();
243
ответ дан 23 November 2019 в 04:01
поделиться

Эта библиотека очень хороша для JSON из C #

http://james.newtonking.com/pages/json-net.aspx

18
ответ дан 23 November 2019 в 04:01
поделиться

Этот фрагмент кода использует DataContractJsonSerializer из System.Runtime.Serialization.Json в .NET 3.5.

public static string ToJson<T>(/* this */ T value, Encoding encoding)
{
    var serializer = new DataContractJsonSerializer(typeof(T));

    using (var stream = new MemoryStream())
    {
        using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, encoding))
        {
            serializer.WriteObject(writer, value);
        }

        return encoding.GetString(stream.ToArray());
    }
}
13
ответ дан 23 November 2019 в 04:01
поделиться

Взгляните на http://www.codeplex.com/json/ для проекта json-net.aspx. Зачем заново изобретать колесо?

7
ответ дан 23 November 2019 в 04:01
поделиться

Если вы не можете или не хотите использовать два встроенных сериализатора JSON ( JavaScriptSerializer и DataContractJsonSerializer ) вы можете попробовать библиотеку JsonExSerializer - я использую ее в ряде проектов и работает довольно хорошо.

5
ответ дан 23 November 2019 в 04:01
поделиться

Если вы пытаетесь создать веб-службу для передачи данных через JSON на веб-страницу, рассмотрите возможность использования набора инструментов ASP.NET Ajax:

http: //www.asp. net / learn / ajax / tutorial-05-cs.aspx

Он автоматически преобразует ваши объекты, обслуживаемые через веб-сервис, в json и создаст прокси-класс, который вы можете использовать для подключения к нему.

2
ответ дан 23 November 2019 в 04:01
поделиться

DataContractJSONSerializer сделает все за вас так же просто, как XMLSerializer. Это тривиально использовать в веб-приложении. Если вы используете WCF, вы можете указать его использование с помощью атрибута. Семейство DataContractSerializer также работает очень быстро.

1
ответ дан 23 November 2019 в 04:01
поделиться

Вы также можете попробовать мой ServiceStack JsonSerializer , это самый быстрый сериализатор .NET JSON на данный момент. Он поддерживает сериализацию DataContracts, любого типа POCO, интерфейсов, объектов с поздним связыванием, включая анонимные типы и т. Д.

Базовый пример

var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json); 

Примечание: используйте Microsofts JavaScriptSerializer только в том случае, если производительность не важна для вас, поскольку мне пришлось оставить его из моих тестов, так как он до 40x-100x медленнее, чем другие сериализаторы JSON.

7
ответ дан 23 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: