Чи надає Microsoft будь-яку бібліотеку для роботи з JSON на C #? Якщо ні, яку бібліотеку з відкритим кодом ви рекомендуєте?
Відповіді:
Ви також повинні спробувати мій ServiceStack JsonSerializer - це найшвидший .NET JSON-серіалізатор на даний момент, заснований на орієнтирах провідних серіалізаторів JSON і підтримує серіалізацію будь-якого типу POCO, DataContracts, Списки / Словники, Інтерфейси, Спадщина, Об'єкти, що мають пізній зв’язок, включаючи анонімні типи тощо.
Основний приклад
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
Примітка: Використовуйте MicroSofts JavaScriptSerializer лише в тому випадку, якщо продуктивність для вас не важлива, оскільки мені довелося залишити її поза своїми тестами, оскільки вона до 40x-100x повільніша, ніж інші серіалізатори JSON.
Фреймворк .net підтримує JSON через JavaScriptSerializer. Ось хороший приклад для початку.
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace GoogleTranslator.GoogleJSON
{
public class FooTest
{
public void Test()
{
const string json = @"{
""DisplayFieldName"" : ""ObjectName"",
""FieldAliases"" : {
""ObjectName"" : ""ObjectName"",
""ObjectType"" : ""ObjectType""
},
""PositionType"" : ""Point"",
""Reference"" : {
""Id"" : 1111
},
""Objects"" : [
{
""Attributes"" : {
""ObjectName"" : ""test name"",
""ObjectType"" : ""test type""
},
""Position"" :
{
""X"" : 5,
""Y"" : 7
}
}
]
}";
var ser = new JavaScriptSerializer();
ser.Deserialize<Foo>(json);
}
}
public class Foo
{
public Foo() { Objects = new List<SubObject>(); }
public string DisplayFieldName { get; set; }
public NameTypePair FieldAliases { get; set; }
public PositionType PositionType { get; set; }
public Ref Reference { get; set; }
public List<SubObject> Objects { get; set; }
}
public class NameTypePair
{
public string ObjectName { get; set; }
public string ObjectType { get; set; }
}
public enum PositionType { None, Point }
public class Ref
{
public int Id { get; set; }
}
public class SubObject
{
public NameTypePair Attributes { get; set; }
public Position Position { get; set; }
}
public class Position
{
public int X { get; set; }
public int Y { get; set; }
}
}
Якщо ви заглянете сюди, ви побачите кілька різних бібліотек для JSON на C #.
Ви знайдете версію для LINQ, а також деякі інші. Існує близько 7 бібліотек для C # та JSON.
Це те, що ви шукаєте?
Погляньте на простір імен system.web.script.serialization (я думаю, вам знадобиться .Net 3.5)
Щоб дати більш сучасну відповідь на це запитання: так, .Net включає серіалізатор / десерліатор JSON, починаючи з версії 3.5, через простір імен System.Runtime.Serialization.Json: http://msdn.microsoft.com/en-us/library /system.runtime.serialization.json(v=vs.110).aspx
Але за словами творця JSON.Net, .Net Framework у порівнянні з його реалізацією з відкритим кодом є набагато повільнішим.
Щоб відповісти на ваше перше запитання, корпорація Майкрософт постачає DataContractJsonSerializer: див. Msdn Як: Серіалізувати та десеріалізувати дані JSON
Спробуйте проект Vici, Vici Parser. Він включає синтаксичний аналізатор / маркер JSON. Це чудово працює, ми використовуємо його разом з MVC framework.
Більше інформації на: http://viciproject.com/wiki/projects/parser/home
Я забув сказати, що це відкритий код, тому ви завжди можете поглянути на код, якщо хочете.