Я пытаюсь разобрать строку JSON с помощью POJO с gson, я столкнулся коряга, однако при попытке прочитать следующий JSON массив:Синтаксические несколько типов в массиве JSON с gson
{"translate":"chat.type.text","with":[{"insertion":"woder22","clickEvent":{"action":"suggest_command","value":"/msg woder22 "},"hoverEvent":{"action":"show_entity","value":"{name:\"woder22\",id:\"bbd02ce0-24de-4683-8c8f-5d7e6b7dffa6\",}"},"text":"woder22"},"hi"]}
Everything работает нормально, пока я не дойду до «с» частью, я пытаюсь разобрать его с помощью следующих объектов POJO
public class ChatMessage {
private String text = "";
private String translate;
private List<With> with = new ArrayList<With>();
private String score;
private String selector;
private List<Node> extra;
private String bold = "false";
private String italic = "false";
private String underlined = "false";
private String strikethrough = "false";
private String obfuscated = "false";
private String color;
private Clicked clickEvent;
private Hover hoverEvent;
private String insertion;
//getter and setter method here
}
class Node {
private String color;
private String text;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
class Clicked {
private String action;
private String value;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
class Hover {
private String action;
private String value;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Я изменил это, чтобы показать весь код
public class With {
private String translate;
private Clicked clickEvent;
private Hover hoverEvent;
private String insertion;
private String text = "";
//setter and getters
public ChatMessage getNonNull(ChatMessage mes){
if(this.text != null)mes.setText(this.text);
if(this.translate != null)mes.setTranslate(this.translate);
if(this.score != null)mes.setScore(this.score);
if(this.selector != null)mes.setSelector(this.selector);
if(this.extra != null)mes.setExtra(this.extra);
if(this.bold != null)mes.setBold(this.bold);
if(this.italic != null)mes.setItalic(this.italic);
if(this.underlined != null)mes.setUnderlined(this.underlined);
if(this.strikethrough != null)mes.setStrikethrough(this.strikethrough);
if(this.obfuscated != null)mes.setObfuscated(this.obfuscated);
if(this.color != null)mes.setColor(this.color);
if(this.clickEvent != null)mes.setClickEvent(this.clickEvent);
if(this.hoverEvent != null)mes.setHoverEvent(this.hoverEvent);
if(this.insertion != null)mes.setInsertion(this.insertion);
return mes;
}
}
Теперь проблема заключается в том, что Gson пытается разобрать это, конечно, сталкивается с проблемой, что вторая часть массива «с» не является объектом «С». Моя проблема в том, что я понятия не имею, как с этим бороться. Любая помощь будет принята с благодарностью.
Edit1 Что предполагают сделать: с массивом просто предполагают, чтобы быть своего рода «перезаписать», как и в любой области от основной строки могут быть перезаписаны и индивидуально отформатированы внутри. То, что означает нулевое значение в нижней части класса С, возможно, должно редактировать основные переменные с их перезаписанным содержимым. Предположительно, это неназванное поле будет текстовой переменной.
Что вы хотите добавить к этому "привет"? Сохраните его в списке? Отменить его? –
О да - я пытаюсь поместить его в переменную, в данном случае переменную «текст» (ее фактический текст, а остальное здесь - форматирование), если это помогает, вот документация по фактической строке json используется здесь: http://wiki.vg/Chat – woder
Связанная с документацией не показывает эту конкретную структуру (говоря о массиве). В любом случае вы можете написать собственный десериализатор для анализа этого JSON по своему усмотрению. –