Невозможно исключить объект модели службы Liferay Service из JSON, который пришел от Elasticsearch, конструктор по умолчанию не найден -- json поле с участием None поле с участием serialization поле с участием deserialization поле с участием liferay пол Связанный проблема

Cannot Deserialize LifeRay Service Model Object from JSON that came from ElasticSearch, Default Constructor not Found


0
vote

проблема

русский

Использование Liferay Portal и Elasticsearch, сериализация пользовательских объектов, состоящих из объектов обслуживания, сериализация идет нормально:

 <код> public String toJSON(){     return JSONFactoryUtil.looseSerializeDeep(this); }   

Я индексирую это в ES, что также хорошо, он содержит список этих объектов, а также один объект, без проблем.

Когда я проверю это, я получаю эту ошибку:

 <код> 10:10:53,972 ERROR [ExceptionHandlerBridgeImpl:78] jodd.json.JsonException: Default ctor not found for: eu.project.drives.platform.model.model.TainingProvider   

для каждого параметра, который является объектом из модели обслуживания.

код (должен быть в порядке, а также пример для одного поля):

 <код> JSONObject obj = JSONFactoryUtil.createJSONObject(h.getSourceAsString());                                  TainingProvider t = JSONFactoryUtil.looseDeserialize(obj.getString("provider"), TainingProvider.class);   

Я не могу просто вызвать конструктор по умолчанию, поскольку он генерируется сервисному строительству, ни я могу сделать «TainingProviderImpl.class», поскольку это другой проект, но в нужный класс должен быть то, что называется «TainingProvider.Class», и это Включает в себя конструктор по умолчанию.

Спасибо.

Английский оригинал

Using LifeRay portal and ElasticSearch, Serializing custom object composed from ServiceModel Objects, Serialisation goes fine:

public String toJSON(){     return JSONFactoryUtil.looseSerializeDeep(this); } 

I index this into ES which is also fine, it contains list of those objects as well as single object, no problem.

When I Deserialize this I get this Error:

10:10:53,972 ERROR [ExceptionHandlerBridgeImpl:78] jodd.json.JsonException: Default ctor not found for: eu.project.drives.platform.model.model.TainingProvider 

For each parameter which is Object from Service Model.

Code (should be ok as well, example for one field):

JSONObject obj = JSONFactoryUtil.createJSONObject(h.getSourceAsString());                                  TainingProvider t = JSONFactoryUtil.looseDeserialize(obj.getString("provider"), TainingProvider.class); 

I cannot simply induce the Default constructor since it is generated by service builder nor I can do the "TainingProviderImpl.class" since it is different project but the Impl class should be what is called through the "TainingProvider.class" and it includes the default constructor.

Thank you.

</div
              

Список ответов

0
 
vote

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

Я не нашел хорошего решения, но напрямую использовал внутренний парсер Jodd. Когда вы подкласс <код> jodd.json.JsonParser вы можете перезаписать защищенный метод для создания института.

 <код> sshfs user@host:dir mountpoint || exit 1 0  

Теперь вы можете использовать парсер напрямую через <код> sshfs user@host:dir mountpoint || exit 1 1

Я не уверен, что можно крюкнуть в этой инсультировании подсказки к поживанию jsonactoryutil, что было бы приятнее вместо того, чтобы иметь прямую зависимость от анализатора Jodd в вашем модуле.

 

The provided type when doing a deserialize is an interface in your example, so the internal Parser (here Jodd) might not find an implementation class to use as a bean class.

I did not find a nice solution, but used the internal Jodd parser directly. When you subclass jodd.json.JsonParser you can overwrite the protected method for instantiation.

@Override protected Object newObjectInstance(Class targetType) {     if (targetType.isAssignableFrom(TainingProvider.class)) {         return TainingProviderLocalServiceUtil.createTainingProvider(0L);     }     return super.newObjectInstance(targetType); } 

Now you can use the parser directly via parser.parse(obj.getString("provider"), TainingProvider.class)

I am not sure if it possible to hook in this instantiation hints to Liferays JSONFactoryUtil, which would be nicer instead of having a direct dependency to the jodd Parser in your module.

</div
 
 

Связанный проблема

1  JSON Данные не рендеринга в раскрывании Kendo UI  ( Json data not rendering in kendo ui dropdown ) 
пытается сделать <код> Json Возвращенные данные в <Код> kendo Выпадающий список, но не рендеринг. Пожалуйста, найдите код Snippett. Я могу увидеть бдительну...

1  Загрузка данных NOSQL в Spark Nuckes  ( Loading nosql data into spark nodes ) 
Я пытаюсь понять, что происходит, когда я загружаю данные в искру от источника NoSQL. т.е. Постарается ли это загрузить записи в драйвер, а затем распределить...

3  Удалить элемент от JsonResult в C #  ( Remove an element from jsonresult in c sharp ) 
У меня есть <код> JsonResult объект для возврата из метода MVC, но мне нужно удалить один элемент от него перед отправкой. <Сильное> Обновление: Я пытаюс...

6  CloudFlare API Перевести зависть в PHP Curl и отправить обновление CNAME  ( Cloudflare api translate curl to php curl and send cname update ) 
Это вопрос и ответ после многих исследований, используя некоторую информацию из других ответов, обнаруженных на StackoverFlow. Как конвертировать command-li...

9  Загрузка FLEXIGRID для jQuery с json String  ( Loading flexigrid for jquery with json string ) 
Я пытаюсь загрузить FLEXIGRID с помощью строки JSON, которая возвращается службой WCF. Мой сервис имеет <код> public string GetContacts(string CustomerID) ...

0  Набор ToggleButton состояние из входящих данных JSON  ( Set togglebutton status from incoming json data ) 
<Р> Я пытаюсь следовать Android учебник , чтобы изменить базу данных MySQL данные из приложения Android. Я довольно новый для концепции JSON синтаксического р...

-1  РАСПИСАНИЕ ДЖОНСКИЙ РАССЫЛКИ С ИСПОЛЬЗОВАНИЕМ GSON  ( Json array parsing using gson ) 
У меня есть следующий ответ JSON как: {"StatusCode": 2, "error_fields": [{"User_:« xxx »}, {" пароль ":" yyy "}]}, и я должен разобрать этот ответ, использу...

8  Кормление моих собственных видео на Screensaver Apple TV  ( Feeding my own videos to apple tv screensaver ) 
На 4-м GEN Apple TV Вы можете выбрать пользовательский URL-адрес файла JSON для загрузки фильмов заставки, кроме Apple. Для этого вам нужно войти в настройки,...

0  Разбор в твиттере JSON  ( Parsing a twitter json ) 
Я использую следующий код для Perfom A Поиск в API Twitter: <код> $.post('lib/themattharris-tmhOAuth-38bd48b/search.php', {q:'@something', pag...

0  HAL, чтобы десерифицировать ответ JSON, если количество полей от ответа не известно?  ( Haw to deserialize json response if the number of fields from the response not k ) 
С тех пор, как я не сейчас, сколько полей ответа JSON не смогу ли у вас сложный код, чтобы соответствовать объекту JSON. Что такое лучшая практика для десериа...

0  Ajax застрял, когда попробуйте позвать второй раз  ( Ajax stuck when try call second time ) 
Мой код Ajax не хочет отвечать снова, когда код Ajax работает один раз. Мой код: <код> $.ajax({ type : "POST", url : "scriptNext.php", ...

0  Объедините несколько столов для ответа JSON в Django Read Framework  ( Combine multiple tables for a json response in django rest framework ) 
Я использую Django Read Framework для моего serializers . Мне нужно создать веб-сервис, который сочетает в себе поля в трех таблицах и дает JSON. У меня ес...

0  карта JSON на провал строки в Java  ( Json map to string failure in java ) 
В Java я пытаюсь преобразовать карту в JSon строку. используя код ниже <код> private void sendResponse(Map<String, String> responseMap) throws IOException {...

1  Отправка аргументов в Drupal Views (JSON, CURL)  ( Sending arguments to drupal views json curl ) 
Я пытаюсь получить вид с датой (узлом), созданный аргументом. Однако, похоже, я не могу получить его на работу правильно, когда я посылаю его, хотя скручивает...

0  Удалить определенные свойства в elasticsearch  ( Delete specific properties in elasticsearch ) 
пытается удалить одно из свойств от типа. прямо сейчас я использую клиент Restlest, чтобы проверить это. (Примечание: Postman также предпочтительнее). Это...