Преобразование «необработанного» запроса в JSON (Rest Services) в .NET - PullRequest
0 голосов
/ 24 мая 2018

Заранее извиняюсь, если мой пост не имеет никакого смысла.Мне нужно создать API, который вызывает URL-адрес службы REST (POST).

Это пример полезной нагрузки:

{
  "request": {
    " TestRequest": {
      "OrderID": {
        "orderNumber": "12345",
        "category": "ABC"
      },
      "SecondCategory": "DEF"
    }
  }
}

Как передать это в моем API?Я очень новичок в этом, поэтому я понятия не имею.Я проверил это в Postman, и он работал нормально, но там мне просто нужно было вставить этот необработанный запрос как есть.Нужно ли конвертировать его в JSON?

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Нужно ли конвертировать его в JSON?

Технически то, что вы разместили здесь , это JSON.JSON - это просто J ava S cript O bject, сериализованный в строку (N для N otation).

Когда речь заходит о том, как справиться с этим в C #, существует ряд возможных вариантов.

Если у вас есть только пара вызовов с такими маленькими полезными нагрузками JSON, как этот, вы можете просто использовать базовую обработку строки C #:

var orderNumber = "12345";
var category = "ABC";
var secondCategory = "DEF";
var JsonString =
    $"{{\"request\":{{\"TestRequest\":{{\"OrderID\":{{\"orderNumber\": \"{orderNumber}\",\"category\":\"{category}\"}},\"SecondCategory\":\"{secondCategory}\"}}}}}}";

Хотя обрабатывать ее как строку довольно просто, это не очень ремонтопригодно со временем.Черт, я написал эту строку, и даже я не могу ее прочитать.;)

Лучшим вариантом является создание классов, соответствующих структуре JSON, которые вы хотите, а затем использование Json.NET для их сериализации во время выполнения.Json.NET - чрезвычайно надежная и эффективная библиотека JSON.

Для начала вам нужно определить классы, которые соответствуют структуре вашего JSON:

public class Root {
    public Request request { get; set; }
}

public class Request {
    public TestRequest TestRequest { get; set; }
}

public class TestRequest {
    public OrderID OrderID { get; set; }
    public string SecondCategory { get; set; }
}

public class OrderID {
    public string orderNumber { get; set; }
    public string category { get; set; }
}

Затем вы можете использовать Json.NET для их сериализации в строку JSON:

string json = JsonConvert.SerializeObject(root, Formatting.Indented);
0 голосов
/ 24 мая 2018

Есть множество способов!Множество клиентских платформ для вещей типа соединения для вас, jQuery, SignalR, Atmosphere, ..

Однако следует помнить, что отправляемые вами данные - не единственные данные, которые, вероятно, понадобятся получателючтобы обработать ваше сообщение.У него будут «заголовки», которые описывают сообщение, и «тело», которое будет содержать ваши данные.

Существует множество примеров, мой личный фаворит: https://api.jquery.com/jQuery.post/

Чтобы вернуться к вашему вопросу

ДОЛЖЕН Я должен преобразовать его в JSON

Не совсем, но вам придется преобразовать его в то, что ваш сервер может понять.Поскольку он идет по сети, его необходимо сериализовать, и указание JSON в качестве этого метода сериализации очень распространено.Внутренне, я ожидаю, что если это не строка, то фреймворки будут автоматически сериализовать ее для вас, как они захотят.

...