【发布时间】:2020-08-24 17:04:38
【问题描述】:
下午好,我的问题对某些人来说可能很简单,但我正在学习,我不能得到一个好的结果。
我有一个 API 需要获取具有以下结构的 json 对象:
{
"usuario": {
"ID_USUARIO": 0,
"CORREO": "maaridano12345@CORREO.com",
},
"persona": {
"ID_USUARIO": 0,
"NOMBRE_COMPLETO": "MaARIANO2 GARFEL",
"domicilios" : [{
"COLONIA" : "CaOLONIA23",
"CALLE" : "SaTREET",
}]
},
"asociado": {
"FOTO": "",
"ID_USUARIO": 0,
"NOMBRE_EMPRESA": "EMPRESAMARIANO2",
"tipoPagos" : [{
"ID_TIPO_PAGO" : 1
}],
"SERVICIOS" : [{
"ID_SERVICIO" : 2
}]
}
}
但是,当我创建我的 JSON 对象时:
Registro = new mRegistro(userList, personList, asociadoList);
Gson gson = new Gson();
json = gson.toJson(Registro);
创建我的结构如下
{
"usuario": [{
"ID_USUARIO": 0,
"CORREO": "maaridano12345@CORREO.com",
}],
"persona": [{
"ID_USUARIO": 0,
"NOMBRE_COMPLETO": "MaARIANO2 GARFEL",
"domicilios" : [{
"COLONIA" : "CaOLONIA23",
"CALLE" : "SaTREET",
}]
}],
"asociado": [{
"FOTO": "",
"ID_USUARIO": 0,
"NOMBRE_EMPRESA": "EMPRESAMARIANO2",
"tipoPagos" : [{
"ID_TIPO_PAGO" : 1
}],
"SERVICIOS" : [{
"ID_SERVICIO" : 2
}]
}]
}
我想要相同的结构,但在 User、Person 和 Associate 参数中我不希望它有方括号,我知道它在那里是因为它是一个列表,它是这样的,因为我的类“mRegistro”包含“usuario、persona 和 asociado”类
添加对象的代码:
usuario = new User(0,emailInput,passwordInput,nameInput,false,false,true,false);
ArrayList<Adress> Domicilios = new ArrayList<Adress>();
domicilio = new Adress("MONARCAS","CALLETEST",34,12,83550,1,0,2);
Domicilios.add(domicilio);
persona = new Person(0, "MARIANO GARFEL","MARIANO","GARFEL","GARCIA", "9876347586","8575757575",
"GARFSONAL@GMAIL.COM","CORREO2@FDS.COM", Domicilios);
ArrayList<Services> Servicios = new ArrayList<Services>();
tipo_servicio = new Services(2);
Servicios.add(tipo_servicio);
ArrayList<PaymentType> TipoPago = new ArrayList<PaymentType>();
tipo_pago = new PaymentType(2);
TipoPago.add(tipo_pago);
asociado = new Associate("",0,"LaEmpresaChida",0,0,"La mejor empresa",2, Servicios, TipoPago );
ArrayList<mRegistro> RegistroAsociado = new ArrayList<mRegistro>();
ArrayList<Associate> asociadoList = new ArrayList<Associate>();
asociadoList.add(asociado);
ArrayList<Person> personList = new ArrayList<Person>();
personList.add(persona);
ArrayList<User> userList = new ArrayList<User>();
userList.add(usuario);
Registro = new mRegistro(userList, personList, asociadoList);
【问题讨论】:
-
看来问题出在
json = gson.toJson()。您可能需要考虑除 Gson 之外的其他库。我会看Jackson。否则,试试 Gson Custom Serialization: howtodoinjava.com/gson/custom-serialization-deserialization -
但是如果你想要前面提到的 Json 结构并且当它的子对象不需要是列表时,你为什么要使用
userList、personList和asociadoList?为什么不让它们成为单个对象而不是对象列表?这样你就不会在对象元素周围有那些列表指示符[ ]。 -
@LalitFauzdar 正如我所说,我正在学习,我看到将一个对象插入另一个对象的方式就是这样,我不能以另一种方式做到这一点,我将代码附在答案中。
-
告诉我们
mRegistro.java。无论如何,您希望usuario作为对象,为什么要使用List<User>? (并尽量遵循 Java 编码约定) -
当一个对象实际上是一个列表时,为什么要查看它。这就像希望看到蜘蛛侠赤身裸体。