Делаю запрос к API в формате JSON, необходимо преобразовать его в модель C#.
JSON:
{
"type":"INDIVIDUAL",
"country": "US",
"profileFields":[
{
"fieldId": "individualLegalName",
"value": "Johnny Quest"
},
{
"fieldId": "individualEmail",
"value": "JohnnyQuest22@yolo.com"
},
{
"fieldId": "individualResidenceAddress",
"value": {
"street1": "1 Market St",
"street2": "Suite 402",
"city": "San Francisco",
"state": "CA",
"postalCode": "94105",
"country": "US"
}
}
]
}
Сейчас отправляю как:
var body = new Dictionary<string, object>
{
{ "type", "INDIVIDUAL" },
{ "country", "US" },
{ "profileFields", "test@sendwyre.com" }
};
Хочу сделать через форму, думаю для этого подойдет создание модели.
У вас есть два пути.
Метод 1. XSD toolПредположим, что ваш XML-файл тут: C:\path\to\xml\file.xml
Кнопка Пуск> Программы> Microsoft Visual Studio 2012 > Visual Studio Tools
или если у вас Windows 8/10 просто начните печатать Командная Строка в меню Пускcd /D "C:\path\to\xml"
xsd file.xml
xsd /c file.xsd
И это всё!
Вы сгенерировали C# классы из xml файла в C:\path\to\xml\file.cs
Нужна Visual Studio 2012+
Shift
+Alt
+C
)Edit > Paste special > Paste JSON As Classes
И это всё!
ИспользованиеИспользовать очень просто с этим вспомогательным классом::
using System;
using System.IO;
using System.Web.Script.Serialization; // Add reference: System.Web.Extensions
using System.Xml;
using System.Xml.Serialization;
namespace Helpers
{
internal static class ParseHelpers
{
private static JavaScriptSerializer json;
private static JavaScriptSerializer JSON { get { return json ?? (json = new JavaScriptSerializer()); } }
public static Stream ToStream(this string @this)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(@this);
writer.Flush();
stream.Position = 0;
return stream;
}
public static T ParseXML<T>(this string @this) where T : class
{
var reader = XmlReader.Create(@this.Trim().ToStream(), new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document });
return new XmlSerializer(typeof(T)).Deserialize(reader) as T;
}
public static T ParseJSON<T>(this string @this) where T : class
{
return JSON.Deserialize<T>(@this.Trim());
}
}
}
Все что вам нужно сделать это:
public class JSONRoot
{
public catalog catalog { get; set; }
}
// ...
string xml = File.ReadAllText(@"D:\file.xml");
var catalog1 = xml.ParseXML<catalog>();
string json = File.ReadAllText(@"D:\file.json");
var catalog2 = json.ParseJSON<JSONRoot>();
Причем так вы можете десереализовывать не только JSON но и XML это достаточно универсальное решение ¯\_(ツ)_/¯
я перевел ответ с английского so
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть окно "MainWindow", в нем Frame "Go" в который при запуске окна помещается "Page1", в "Page1" еще один Frame "Main", в котором лежит "Page2"
Интересная ситуация, при попытке установки значения для BitmapImageUriSource через привязку данных, вот так:
В скрипте есть переменная : public Camera PlayerCam; Через метод public void Start() {