JSON десериализатор в целевой объект - PullRequest
1 голос
/ 19 апреля 2011

Можете ли вы порекомендовать Jse Deserializer, который может десериализовать в существующий объект ( объединить 2 объекта )?
Когда пользователь отправляет форму, я хочу сохранить ее в БД следующим образом:

это json от клиента:

{"affiliateId":1,"name":"First Affiliate","email":"email@gmail.com","user.userName":"test","user.password":"pass-hashed","employee.employeeId":1}


Affiliate affiliateFromDb = affiliateApi.getFromDbById(1);

SomeDeserialization json = new SomeDeserialization();
affiliateFromDb = json.fromJson(affiliateFromJson  , affiliateFromDb );//affiliateFromDb = target bean

Это означает, что я хочу, чтобы affiliateFromJson был интерполирован в affiliateFromDb.
А потом я позвоню

 affiliateApi.save(affiliateFromDb);

Обратите внимание, что json содержит глубокую десериализацию, user.userName

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

http://www.json.org/javadoc/org/json/JSONObject.html

JSONObject jsonResponse = new JSONObject(responseString);
0 голосов
/ 19 апреля 2011

Используйте Гсон ! В частности, см. Примеры объектов .

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   

Единственный улов здесь & mdash; но у вас будет такая же проблема с любым другим JSON (de) сериализатором & mdash; это нестандартный "глубокий" формат объекта, с которым вы хотите работать. Вы должны использовать что-то вроде этого:

{"affiliateId":1,"name":"First Affiliate","email":"email@gmail.com","user": {"userName":"test","password":"pass-hashed"},"employee.employeeId":1}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...