JSON в C#; Отправка и получение данных

Я пытаюсь сделать настольный клиент для приложения Запроса и Ответа.

Я могу сделать, ПОЛУЧАЮТ запросы легко. Но я задавался вопросом, мог ли кто-то помочь мне разработать, как я мог сделать запрос JSON и ответ. и проанализируйте его к строке, оттуда я могу тренировка, как разрезать все это в длину

16
задан Kiquenet 17 March 2017 в 11:28
поделиться

3 ответа

json.net повсеместно в .NET Мир.

13
ответ дан 30 November 2019 в 16:49
поделиться

Небольшое обновление:

как альтернатива System.Web или JSON.NET, есть также jsonfx и ServiceStack.Text


для настольного приложения Один вариант для создания JSON Запрос ниже. Там может быть API где-то, чтобы уже сделать это, но я не нашел никого.

Приложение Desktop

Test '- это просто здесь, чтобы продемонстрировать параметры прохождения. Javascriptserializer найден в System.Web.extsions.dll.

HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create("http://localhost:2616/Default.aspx/JsonTester");
request.ContentType = "application/json; charset=utf-8";
request.Accept = "application/json, text/javascript, */*";
request.Method = "POST";
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
    writer.Write("{id : 'test'}");
}

WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
string json = "";

using (StreamReader reader = new StreamReader(stream))
{   
    while (!reader.EndOfStream)
    {
        json += reader.ReadLine();
    }
}

// 3.5+ adds 'D' to the result, e.g.
// {"d":"{\"Name\":\"bob\",\"Age\":20,\"Foods\":[\"cheeseburger\",\"caviar\"]}"}
// So it thinks it's a dictionary with one key/value
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> x = (Dictionary<string, object>)serializer.DeserializeObject(json);
MyData data = serializer.Deserialize<MyData>(x["d"].ToString());

Default.aspx в webapplation asp.net:

[WebMethod]
public static string JsonTester(string id)
{
    JavaScriptSerializer ser = new JavaScriptSerializer();

    var jsonData = new MyData()
    {
        Name = "bob",
        Age = 20,
        Foods = new List<string>()
    };

    jsonData.Foods.Add("cheeseburger");
    jsonData.Foods.Add("caviar");

    var result = ser.Serialize(jsonData);
    return result;
}

Объект MyData

MyData появляется в приложении Web, так и в приложении консоли, но вы захотите поместить его в собственную сборку как Ваш доменный объект и ссылка на его в двух местах.

public class MyData
{
    public string Name { get; set; }
    public int Age { get; set; }
    public IList<String> Foods { get; set; }
}
20
ответ дан 30 November 2019 в 16:49
поделиться

Взгляните в систему System.Web.script.Serialization.javascripterializer класс в системе.

Он содержит сериализацию и десериализовать методы , которые являются довольно прямыми для использования.

3
ответ дан 30 November 2019 в 16:49
поделиться
Другие вопросы по тегам:

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