Как я могу зациклить Json с динамическим типом в .netcore 1.1? - PullRequest
1 голос
/ 06 мая 2019

Я передал объект Json, хотя Почтальон. И я понятия не имею, как я могу сделать это с помощью веб-службы .NetCore 1.1.

Json Объект передан почтальоном:

{
 [
  {"id":"1","name":"Peter"}
  ,
  {"id":"2","name":"Mary"}
 ]
}

.net core 1.1 кодирование:

[HttpPut]
[Route("all")]
public IActionResult UpdateName([FromBody] dynamic JSON){
  var RootObjects = JsonConvert.DeserializeObject<List<RootObject>>(JSON);
  foreach (var x in RootObjects){
   // do something here...
  }
}

RootObjects:

private class RootObject
{
    public string id { get; set; }
    public string name { get; set; }
}

И я получаю ошибку ниже:

System.ArgumentNullException: значение не может быть нулевым. \ R \ nИмя параметра: значение \ r \ n в Newtonsoft.Json.JsonConvert.DeserializeObject (строковое значение, тип Type, настройки JsonSerializerSettings) \ r \ n в Newtonsoft.Json. JsonConvert.DeserializeObject [T] (строковое значение, настройки JsonSerializerSettings) \ r \ n на CallSite.Target (закрытие, CallSite, тип, объект) \ r \ n

1 Ответ

1 голос
/ 06 мая 2019

Возможно, ваш json недействителен. Измените строку json на:

 [
  {"id":"1","name":"Peter"},
  {"id":"2","name":"Mary"}
 ]

И измените действие вашего контроллера на:

   [HttpPut]
    public IActionResult Test([FromBody] List<RootObject> list)
    {
        foreach (var item in list)
        {
            Console.WriteLine(item.name);
        }

        return Json("ok");
    }

А также класс RootObject должен быть Public:

     public class RootObject
     {
       public string id { get; set; }
       public string name { get; set; }
     }

Используйте строку ввода почтальона в Content-Type: application / json.И я увидел правильный результат.

...