powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как сериализовать объект из текста Json ?
45 сообщений из 45, показаны все 2 страниц
Как сериализовать объект из текста Json ?
    #39799323
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс Request и метод контроллера, который принимает этот класс в качестве параметра:
Код: c#
1.
2.
[HttpPost]
public string Request(request Request)


Как я понимаю, класс сериализуется из Json текста, которой в этот метод посылают пользователи.
Дело в том, что стандартный сериализатор сериализует объект не совсем так, как хотелось бы (в частности List<> и Dictonary<>).

Можно как то написать свой сериализатор ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799330
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то каша какая-то.
У тебя пользователи не в браузере, а в толстом клиенте на .NET?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799338
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BМожно как то написать свой сериализатор ?
Реализовать свой IModelBinder , либо попытаться настроить сериализатор.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799348
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
Нажми F12 и покажи что отправляют прльзователи в кавычках.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799351
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧто-то каша какая-то.
У тебя пользователи не в браузере, а в толстом клиенте на .NET?
Что то типо.
И не обязательно на .NET

По сути, текст в POST может сделать кто угодно, и как угодно.
Проблема со списками, которые есть в классе Request.

Конечно, можно заставить присылать Json строгом в формате под текущий сериализатор.
Но где гарантия, что со обновлением VisualStudio этот формат не измениться ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799352
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧто-то каша какая-то.
У тебя пользователи не в браузере, а в толстом клиенте на .NET?присоединяюсь к вопросу)
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799355
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BПроблема со списками,покажи их.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799356
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BПо сути, текст в POST может сделать кто угодно, и как угодно.добро пожаловать в REST.
1. Можно не делать много параметров и передать их в урл без json.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799358
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BКонечно, можно заставить присылать Json строгом в формате под текущий сериализатор.
Но где гарантия, что со обновлением VisualStudio этот формат не измениться ?
А был прецедент?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799366
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BНо где гарантия, что со обновлением VisualStudio этот формат не измениться ?А причем тут вообще VS? Какое отношение сериализатор к ней имеет?


Как связаны этим две вещи?
Valery_Bстандартный сериализатор сериализует объектValery_BИ не обязательно на .NET
По сути, текст в POST может сделать кто угодно, и как угодно.
Причем тут сериализатор на сервере, если тебе извне непонятно кто непонятно в каком формате присылает JSON.
Вероятно, речь идет о десериализации. Но тут опять же подход непонятен. Ты пишешь АПИ, к нему есть определенные требования к присылаемой информации, если информация приходит в некорректном формате, то клиент получает ошибку

Короче, пример давай.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799371
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА был прецедент?
Не знаю... Наверное нет.
Но и где гарантии того, что формат Json не изменится ?
Petro123покажи их.
Получается, что список может быть jArray, а может быть и jObject.
Можно сериализовать разными способами, видимо, зависит от языка, на котором сериализуется объект.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
Можно так:
 [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"} ]

А можно и так:
{
"Items": [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"}     ]
}
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799375
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Я со всем согласен, но:
1. Ты можешь дать ссылку, где написано, что объекты всегда будут сериализовываться строго в текущий Json ?
2. Вопрос в общем то - как изменить стандартную сериализацию ? А правильно это или нет - это другая тема.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799385
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B1. Ты можешь дать ссылку, где написано, что объекты всегда будут сериализовываться строго в текущий Json ?Расшифруй понятие "текущий json", а то я что-то не сталкивался
Valery_B2. Вопрос в общем то - как изменить стандартную сериализацию ? А правильно это или нет - это другая тема.я так и не понял, что тебе нужно - свой сериализатор или свой десериализатор. Из твоих слов следует, что сериализация тебе неподконтрольна и ты вообще не понимаешь, в каком формате тебе придет JSON, следовательно вопрос - а как ты собираешься писать для него десериализатор?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799386
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BМожно сериализовать разными способами, видимо, зависит от языка, на котором сериализуется объект.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
Можно так:
 [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"} ]

А можно и так:
{
"Items": [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"}     ]
}

Это разные объекты, в первом случае массив, во втором случае объект со свойством Items
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799390
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.. если такой цирк с сериализаторами, то тогда принимать как строку, а потом парсить её под "текущий json" (если получится) ... что еще не меньший цирк ...
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799400
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik.. если такой цирк с сериализаторами, то тогда принимать как строку, а потом парсить её под "текущий json" (если получится) ... что еще не меньший цирк ...+1
)))
Либо выжигать цирк каленым железом.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799401
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProРасшифруй понятие "текущий json", а то я что-то не сталкивался
Текущий json - это такой текст, из которого получается объект.
Если какой либо сериализатор (в будущем), найдёт список List<string> в объектре и добавит "Items":[..]", то он не будет сериализовыватся в "текущем json".
Valery_Bя так и не понял, что тебе нужно - свой сериализатор или свой десериализатор.
Я хочу, что бы параметр метода(объект) сериализовывался мной, а не автоматически.
Пусть даже в тоже самое.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799402
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BПолучается, что список может быть jArray, а может быть и jObject.
Можно сериализовать разными способами, видимо, зависит от языка, на котором сериализуется объект.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
Можно так:
 [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"} ]

А можно и так:
{
"Items": [{"ID":1,"Name":"Vasya"}, {"ID":2,"Name":"Petya"}     ]
}


Передай в урл без json.
Рано тебе api делать.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799409
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валидируй на входе и отфутболивай плохой формат.
Моя тема:
Подскажите валидатор json.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799411
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЭто разные объекты, в первом случае массив, во втором случае объект со свойством Items
Создай аналог класса на разных языках и посмотри, какой Json они сгенерируют.
Код: c#
1.
2.
3.
4.
5.
6.
 public class MyUser
    {
        public string FullName { get; set; }
        public string LoginName { get; set; }
        public Dictionary<string, string> Roles { get; private set; }
    }


Он у всех будет разный, пример я давал.
Если это зависит от ЯП, то где гарантия он не изменится в ASP.NET от версии к версии?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799415
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В частности приходит ошибка при { вместо [.
В моём случае это не ошибка, а зависит от сериализатора/десириализатора.

Я хочу, что бы это было это было написано руками, а не автоматически.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799421
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BPetro123В частности приходит ошибка при { вместо [.
В моём случае это не ошибка, а зависит от сериализатора/десириализатора.

Я хочу, что бы это было это было написано руками, а не автоматически.
ЭТО руками это что?
Если клиент может быть ЛЮБОЙ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799423
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BВ моём случае это не ошибкая там исправлял у себя эту ситуацию руками.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799424
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,

..на том же JS c разными библиотеками/фрейморками JSON.stringify(obj) может выдать разные результаты из-под knockout и vue .. Но на то и кодер на клиентской стороне, чтобы отформатировать JSON под требование API, а не наоборот ...
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799428
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BНе знаю... Наверное нет.
Но и где гарантии того, что формат Json не изменится ?
Где, где, JSON стандартизован:
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799429
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС.
JSON с фигурными обзови каноническим форматом post /set-user-infо и опиши в документации.
JSON c квадратными скобками обзови платным форматом и конвертируй на входе.
Всё.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799436
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikValery_B,

..на том же JS c разными библиотеками/фрейморками JSON.stringify(obj) может выдать разные результаты из-под knockout и vue .. Но на то и кодер на клиентской стороне, чтобы отформатировать JSON под требование API, а не наоборот ...
Всё верно.
Но если в JS возможен разный Json, то где нибудь написано, что такое не возможно в ASP NET ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799443
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде, где, JSON стандартизован:
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
Json да, стандартизирован.
Только ты не совсем правильно понял.

Я говорю о том, что объекты могут быть сериализованы по разному.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799455
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
Типо ты хотел без валидации обойтись принимая строку отовсюду и из свалки итернета.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799457
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё пример. Класс Datatable.
Можно де/сериализовать так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
{
  "Columns": 
    [
    {"ID": "Int"},
    {"Name": "String"},
    ],
  "Rows": 
    [
    ["1","John Smith"],
    ["2","Mary Williams"]    
    ]
}


И так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
[ 
   {
     "ID":1,
    "Name":"John Smith"
   },
   {
     "ID":"2",
     "Name":"Marry Williams"
   }
]


Как указать, какой из этих json я жду в методе контроллера, который принимает Datatable ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799458
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BskyANAГде, где, JSON стандартизован:
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
Json да, стандартизирован.
Только ты не совсем правильно понял.

Я говорю о том, что объекты могут быть сериализованы по разному.
Ты либо определи требования (контракт), либо пиши свой IModelBinder, либо свои JavaScriptConverter (JsonConverter).

Код как написан, так и работает. И так и будет работать. Никакой магии.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799463
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЕщё пример. Класс Datatable.
Можно де/сериализовать так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
{
  "Columns": 
    [
    {"ID": "Int"},
    {"Name": "String"},
    ],
  "Rows": 
    [
    ["1","John Smith"],
    ["2","Mary Williams"]    
    ]
}



И так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
[ 
   {
     "ID":1,
    "Name":"John Smith"
   },
   {
     "ID":"2",
     "Name":"Marry Williams"
   }
]



Как указать, какой из этих json я жду в методе контроллера, который принимает Datatable ?
Ты об этом должен позаботиться: описать спецификацию, ручками, или Swagger какой использовать.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799465
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BКак указатьпереходи в soap. Там ты клиенты по урл скачают фоормат)))
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799466
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_Bjson я жду в методевопрос другой - с какой коллекцией ты СМОЖЕШЬ работать на бэкенде?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799471
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы либо определи требования (контракт), либо пиши свой IModelBinder, либо свои JavaScriptConverter (JsonConverter).

По ссылке на IModelBinder я не понял, это и есть свой сериализатор, который я хочу ?
Если да, то можешь дать мини пример, как им пользоваться ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799483
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_Bсвой сериализатора ты его всем клиентам поставишь? И на java? Или как?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799528
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BskyANAТы либо определи требования (контракт), либо пиши свой IModelBinder, либо свои JavaScriptConverter (JsonConverter).

По ссылке на IModelBinder я не понял, это и есть свой сериализатор, который я хочу ?
Если да, то можешь дать мини пример, как им пользоваться ?
По ссылке интерфейс, который необходимо реализовать, используя десериализацию какую хочется.
В любом учебнике по ASP.NET MVC расписано про привязку моделей и ModelBinder.

Мини пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
using System;
using System.IO;
using System.Web;
using System.Web.Mvc;

public class ModelBinder<TResult> : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        HttpRequestBase request = controllerContext.HttpContext.Request;
        string requestData;
        Stream requestStream = request.InputStream;

        requestStream.Seek(0, SeekOrigin.Begin);

        using (var reader = new StreamReader(requestStream))
        {
            requestData = reader.ReadToEnd();
        }

        try
        {
            return Deserialize(requestData);
        }
        catch (Exception ex)
        {
            ex.Data.Add("Request.Data", requestData);
            throw ex;
        }
    }

    protected TResult Deserialize<TResult>(string requestData)
    {
        // Тут пишешь код нужной тебе десериализации
    }
}
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799532
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123а ты его всем клиентам поставишь? И на java? Или как?
Только на своём сервере.

Можно в очередной раз перефразировать вопрос - я хочу принимать объект в своём строгом формате Json и заставить всех присылать именно в нём.
т.е.
Код: c#
1.
2.
[HttpPost]
public string Request(Table Datatable)


А Json, как из примера выше.

Как это сделать ?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799544
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BМожно в очередной раз перефразировать вопрос - я хочу принимать объект в своём строгом формате Json и заставить всех присылать именно в нём.заставить как?
Во время эксплуатации?
Выдавая ошибку при валидации что формат не соответствует.
Ты же лет на 5 прогу пишешь?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799560
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
Ну а не заставляя, ВТИХУЮ конвертировать или ручной десериализатор подгонять под твой формат.
По моему это очевидно.
Удачи!
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799561
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BМожно в очередной раз перефразировать вопрос - я хочу принимать объект в своём строгом формате Json и заставить всех присылать именно в нём.тогда зачем тебе свой сериализатор?
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799577
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BPetro123а ты его всем клиентам поставишь? И на java? Или как?
Только на своём сервере.

Можно в очередной раз перефразировать вопрос - я хочу принимать объект в своём строгом формате Json и заставить всех присылать именно в нём.
т.е.
Код: c#
1.
2.
[HttpPost]
public string Request(Table Datatable)


А Json, как из примера выше.

Как это сделать ?

..вам уже сказали в разных вариантах: принимать строку ...через Context или напрямую Request(string BadJson) ... а потом уже в экшене парсить его на предмет "А где тут истинный JSON внутри этого дурацкого объекта" ...
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799580
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proтогда зачем тебе свой сериализатор?
Ну, например что бы метод контроллера
Код: c#
1.
2.
[HttpPost]
public string Request(Table Datatable)


Принимал объект DataTable(в данном случае) созданный из этого Json
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
{
  "Columns": 
    [
    {"ID": "Int"},
    {"Name": "String"},
    ],
  "Rows": 
    [
    ["1","John Smith"],
    ["2","Mary Williams"]    
    ]
}


А для других классов Json определённый мной, а не сериализатором C#.
Причины я уже называл.

Ладно, попробую как написал skyANA.
Хотя я не совсем понял, куда встраивать этот класс.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799583
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BПринимал объект DataTable(в данном случае) созданный из этого JsonИ зачем? Тут два этапа:
1) Принять JSON и десериализовать его в объект, СООТВЕТСТВУЮЩИЙ принятому JSON-у (стандартным десериализатором, заодно это и провалидирует пришедшие данные)
2) Замаппить полученный объект на DataTable (например с помощью автомаппера или вручную, если есть желание)

А писать свой десериализатор - глупость.
...
Рейтинг: 0 / 0
Как сериализовать объект из текста Json ?
    #39799601
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЛадно, попробую как написал skyANA.
Хотя я не совсем понял, куда встраивать этот класс.
Гугл в помощь...
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как сериализовать объект из текста Json ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]