Я использую библиотеку GSON для работы с данными из анализатора Tone API (IBM Bluemix)Могу ли я десериализовать строку JSON в существующий объект?
В моем приложении я создаю ToneAnalysis
объект, используя статический метод, как мне нужно только чтобы прочитать свойство объекта и никогда создайте новый экземпляр. Так что я никогда не должны делать это:
ToneAnalysis ta = new ToneAnalysis();
То, как я делаю вещи, на данный момент являются ::
string json = "{\"document_tone\": { ... } }";
ToneAnalysis ta = ToneAnalysis.fromJsonString(json)
Этот подход означает, что я закончил с частным параметрируемую менее пустой конструктор:
public class ToneAnalysis {
private DocumentTone document_tone;
public DocumentTone getDocumentTone() {
return this.document_tone;
}
public static ToneAnalysis fromJsonString(String json) {
return new Gson().fromJson(json, ToneAnalysis.class);
}
private ToneAnalysis() {
}
}
Поскольку fromJson
создает объект с помощью отражения. Я не могу это сделать:
this = gson.fromJson(json, ToneAnalysis.class);
Есть ли способ, чтобы объект JSON, чтобы быть deserialised в существующий объект или мне нужно пересмотреть свой дизайн?
Сериализация в Java использует открытый конструктор no-arg. Вероятно, есть множество других способов сделать это, но они не являются сериализацией (как это определяет среда выполнения Java). – Tibrogargan
Просто: просто напишите свой собственный JSON-парсер. –
Джексон может помочь вам десериализовать JSON для объектов Java. – HARDI