Ответы пользователя по тегу JSON
  • Как привести Date обьект js в DateTime формат C#?

    @kttotto
    пофиг на чем писать
    К Вам приходит дата с учетом часового пояса. Тип DateTime часовой пояс не учитывает, значит Вы будете терять время при приведении. Если время зависит от локали и часовой пояс необходим, то принимать время нужно в формате DateTimeOffset (ну или приводить к нему, если принимаете строку), тогда время теряться не будет.
    Ответ написан
  • Как в NewTonSoft задать схему десериализации ответа?

    @kttotto
    пофиг на чем писать
    Думаю, что ошибка в строке
    string json2 = @"{['Шляпа','Кепка']}";
    Все, что в фигурных скобках - это объект, но у Вас массив. Попробуйте
    string json2 = @"['Шляпа','Кепка']";
    Ответ написан
    1 комментарий
  • Как получить данные json в контроллере?

    @kttotto
    пофиг на чем писать
    FromBody может быть только один из параметров метода контроллера. И обычно это сложный тип, нет смысла отмечать им примитивы. Проверьте, есть ли вообще параметр в теле запроса: поставьте брейк поинт на самое начало метода и провалитесь в this.Request.Body, посмотрите чьи там параметры. Я предполагаю, что там в лучшем случае будет List. Попробуйте так (string id, [FromBody] List roles). Если так не сработает, то тогда нужно сделать так, как сказала Даша Циклаури.
    Ответ написан
    Комментировать
  • Почему не работает добавление / удаление элементов в «LocalStorage»?

    @kttotto
    пофиг на чем писать
    Он у Вас падает вот в этом месте
    this.products = JSON.parse(localStorage['addbook']);

    т.к при инициализации localStorage['addbook'] = "", а такое он не может преобразовать к json.
    Ответ написан
    Комментировать
  • Как разобрать ответ JSON в C#?

    @kttotto
    пофиг на чем писать
    0. Нет необходимости инициализировать Res перед десериализацией, DeserializeObject вернет объект и Res будет указывать на него.

    1. Десериализовать надо к конкретному типу, а так он десериализует к object и нужные Вам поля будут не видны.
    Res = JsonConvert.DeserializeObject<RootObject>(Response);
    2. Список нужно указывать с конкретным типом, иначе это будет опять список object
    public List<Sm> sms { get; set; }

    3. Если Res.sms это список, то поля text у него не будет, Вам нужно взять конкретный объект из этого списка и у него уже читать поле text.
    Res.sms[0].text

    4. В итоге все сводится к двум строчкам
    var Res = JsonConvert.DeserializeObject<RootObject>(Response);
    var strTextSMS = Res.sms[0].text;  // индекс 0 для примера
    Ответ написан
    Комментировать
  • Используя метод return Json() на клиенте в success function(data) undefined. Как исправить?

    @kttotto
    пофиг на чем писать
    Сделайте запрос к своему api в строке браузера или через postman. Если придет нормальный json, значит дело в запросе ajax, в его настройках, если нет - значит не сериализуется объект в json.
    Ответ написан
    6 комментариев
  • Как десериализовать запрос?

    @kttotto
    пофиг на чем писать
    Вариантов несколько.

    Первый, это как написано постом выше, привести к dynamic. Но у этого варианта есть недостаток - в каждый момент надо знать какое поле пришло, иначе получите эксепшин на уровне рантайма. Но знать это, по видимому, не реально.

    Второй, это преобразовать к
    public string form_name { get; set; }
    public object value { get; set; }

    В принципе это почти тот же вариант что и первый, ибо дайнемик это тот же обжект, просто на уровне компиляции не проходит проверки типов. А затем value приводить к заранее известному типу, сделать switch, чтобы логика была как то так
    response.value = response.value as string;
    if(response.value == null)
    {
         response.value = response.value as SomeClass;
         if(response.value == null)
         {
             response.value =  response.value as OtherClass;
       ....

    Но у этого способа тоже есть недостаток, нужно точно знать какие типы могут приходить в value.

    И третий вариант, это привести value к JObject и уже руками вытягивать нужные узлы со значением.

    PS. И еще, не рекомендовал бы именовать модель подстраиваясь под json. Для этого у newton есть нужные атрибуты
    public class Form
    {
    	[PropertyName = "form_name")]
    	public string FormName { get; set; }
    	
    	[PropertyName = "value")]
    	public string Value { get; set; }
    }
    Ответ написан
    Комментировать
  • Как десереализировать этот JSON?

    @kttotto
    пофиг на чем писать
    JSON, это описание объектов в JavaScript. И поле response это не массив, а объект с полями "AK-47 | A...", соответственно и эти поля тоже не массивы.

    Вариант первый, некрасивый и похож на хак, это заменить {} у респонса на [], тогда он станет массивом, ну и в остальных нужных местах и можно будет десериализовать к dictionary.

    Вариант второй, трансформировать этот Json к другому типу Json. Тут сложнее, потому что нормальных библиотек для этого просто нет. Когда мне это надо было делать, я использовал JUST.net. Что мне в ней понравилось, так это быстрый фидбек от разработчика, если не хватает функционала, то он очень быстро его по Вашему желанию добавит. Ну а после трансформации, десериализуйте его уже во что захотите.

    P.S. Тут в процессе диалога с Stalker_RED, еще один вариант созрел. Если Вы уверены в структуре Json объекта, то его можно привести к JObject. Этот объект представляет собой дерево, где Вы сможете взять узлы (поля) первого уровня, у них получить узлы второго уровня, соответственно из каждого из узлов получите имя и значение. Ну так и сформируете свою модель, какую захотите. В Вашем варианте это будет оптимальным решением.
    Ответ написан