Red de conocimiento informático - Aprendizaje de programación - ¿Cómo encapsular datos en un paquete JSON en Java?

¿Cómo encapsular datos en un paquete JSON en Java?

json;

importar?java.io.IOException;

importar?java.util.ArrayList;

importar?java.util.ArrayList;

importar?java.util.Collection;

importar?java.util.HashMap;

importar?java.util.Iterator;

importar ?java.util.List;

importar?java.util.Map;

importar?javax.servlet.mons.beanutils.BeanUtils;

¿importar? BeanUtils;

importar?org.apache.struts2.ServletActionContext;

importar?com.opensymphony.xwork2.ActionContext;

¿clase pública?JSONUtils p>

{

/**

*?

*?@autor?wangwei?JSONUtils

* ?@ param?lt;Tgt;

*?

*/

/***

*?Serializar el objeto Lista como texto JSON

*/

public?static?lt;Tgt;?String?toJSONString(Listlt;Tgt;?list)

{

JSONArray?jsonArray ?=?JSONArray.fromObject(lista);

return?jsonArray.toString();

}

/** *

*?Serializar el objeto en texto JSON

*?@param?object

*?@return

*/

public?static?String?toJSONString(Object?object)

{

JSONArray?jsonArray?=?JSONArray.fromObject( object);

return?jsonArray.toString();

}

/***

*?Serializar matriz de objetos JSON en texto JSON

p>

*?@param?jsonArray

*?@return

*/

public?static?String?toJSONString(JSONArray?jsonArray)

{

return?jsonArray.toString();

}

/***

* ?Serializar objeto JSON a texto JSON

*?@param?jsonObject

*?@return

*/

public ?static ?Calle

ring?toJSONString(JSONObject?jsonObject)

{

return?jsonObject.toString();

}?

/** *

*?Convertir el objeto en un objeto de lista

*?@param?object

*?@return

*/

public?static?List?toArrayList(Object?object)

{

List?arrayList?=?new?ArrayList();

JSONArray?jsonArray?=?JSONArray.fromObject(objeto);

Iterador?it?=?jsonArray.iterator();

mientras?(it.hasNext() )

{

JSONObject?jsonObject?=?(JSONObject)?it.next();

Iterador?keys?=?jsonObject.keys()

mientras?(keys.hasNext())

{

Objeto?key?=?keys.next ();

¿Objeto?valor?=?jsonObject.get(clave);

arrayList.add(valor);

}

}

return?arrayList;

}

*?Convertir el objeto JSON en un objeto del tipo entrante

*?@param?lt;Tgt;

*?@param?jsonObject

*?@param?beanClass

*?@return

*/

public?static?lt;Tgt;?T?toBean(JSONObject?jsonObject,?Classlt;Tgt;?beanClass)

{

return?(T)?JSONObject. toBean( jsonObject,?beanClass);

}

/***

*?convertirá el objeto en un objeto del tipo entrante

*?@param?lt;Tgt;

*?@param?object

*?@param?beanClass

*?@return

*/

public?static?lt;Tgt;?T?toBean(Object?object,?Classlt;Tgt;?beanClass)

{

JSONObject?jsonObject?=?JSONObject.fromObject(objeto);

retorno?(T)?JSONObject.toBean(jsonObject,?beanClass);

}

/***

*?Deserializar texto JSON en una entidad con una relación maestro-detalle

*?@param?lt;Tgt;?Universal Representación T Tipo de entidad principal <

/p>

*?@param?lt;Dgt;? La D genérica representa el tipo de entidad subordinada

*?@param?jsonString?Texto JSON

*?@param ? mainClass?Tipo de entidad maestra

*?@param?detailName?El nombre del atributo de la clase de entidad esclava en la clase de entidad principal

*?@param?detailClass?Tipo de entidad esclava

*?Return

*/

public?static?lt;T,?Dgt;?T?toBean(String?jsonString,?Classlt;Tgt ;?mainClass,

String?detailName,?Classlt;Dgt;?detailClass)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString) ;

JSONArray?jsonArray?=?(JSONArray)?jsonObject.get(detailName);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

Listlt;Dgt;?detailList?=?JSONUtils.toList(jsonArray,?detailClass);

prueba

{

BeanUtils.setProperty (mainEntity,? DetailName,?DetailList);

T?detailName, DetailList);

}

catch(Exception?ex)

{

throw?new?RuntimeException("¡Error al deserializar la entidad para la relación maestro-esclavo JSON!") )

}

return?mainEntity;

}

/***

*?Deserializar texto JSON en entidades para lograr una relación maestro-esclavo

*?@param ? lt; Tgt; T genérico representa el tipo de entidad principal

*?@param?lt; ; D2gt; D2 genérico representa el tipo de entidad subordinada

*?@param?jsonString?Texto JSON

*?@param?mainClass?Tipo de entidad maestra

* ?@param?detailName1?Atributos de la clase de entidad esclava en la clase de entidad maestra

*?@param?detailClass1?Tipo de entidad esclava

*?@param?detailName2? En la clase de entidad maestra Atributos de las clases de entidad subordinadas

*?@param?detailClass2?Tipo de entidad esclava

*?@return

*/

público ?static?lt;T,?D1,?D2gt;?T?toBean(String?jso

nString,?Classlt;Tgt;?mainClass,

String?detailName1,?Classlt;D1gt;?detailClass1,?String?detailName2,

Classlt;D2gt;?detailClass2)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

JSONArray?jsonArray1?=?(JSONArray)?jsonObject.get(detailName1);

JSONArray?jsonArray2?=?(JSONArray)?jsonObject.get(detailName2);

T?toList(jsonArray1,?detailClass1);

Listlt; D2gt;?detailList2?=?JSONUtils.toList(jsonArray2,?detailClass2);

prueba

{

BeanUtils.setProperty(mainEntity,?detailName1,? DetailList1);

BeanUtils.setProperty(mainEntity,?detailName2,?detailList2);

}

captura?(Exception?ex)

{

throw?new?RuntimeException("¡Error en la deserialización JSON maestro-esclavo de la entidad!") )

}

return?mainEntity; p>

}

/***

*?Deserializar texto JSON en entidades maestro-detalle

*?@param?lt; Tgt; T genérico representa el tipo de entidad principal

*?@param?lt; D1gt genérico representa el tipo de entidad subordinada

*?@param?lt; ¿D2 genérico representa el tipo de entidad subordinada

*?@param?jsonString?Texto JSON

*?@param?mainClass?Tipo de entidad maestra

*? @ param?detailName1?Atributos de la clase de entidad esclava en la clase de entidad maestra

*?@param?detailClass1?Tipo de entidad esclava

*?@param?detailName2?Master Entidad esclava en la clase de entidad Atributos de la clase

*?@param?detailClass2?Tipo de entidad esclava

*?@param?detailName3?master Atributos de la clase de entidad subordinada en la clase de entidad

*?@param?detailClass3?Tipo de entidad esclava

*?Return

*/

public?static?lt;T ,?D1,?D2, ?D3gt;?T?toBean(String?jsonString,

Classlt;Tgt;?mainClass,?Str

ing?detailName1,?Classlt;D1gt;?detailClass1,

Cadena?detailName2,?Classlt;D2gt;?detailClass2,?String?detailName3,

Classlt;D3gt;?detailClass3)

{

JSONObject?jsonObject?=?JSONObject.fromObject(jsonString);

JSONArray?jsonArray1?=?(JSONArray)?jsonObject.get(detailName1 );

JSONArray?jsonArray2?=?(JSONArray)?jsonObject.get(detailName2);

JSONArray?jsonArray3?=?(JSONArray)?jsonObject.get(detailName3);

T?toList(jsonArray1,?detailClass1);

Listlt;D2gt;?detailList2?=?JSONUtils.toList(jsonArray2,?detailClass2);

Listlt;D3gt;?detailList3?toList(jsonArray3,?detailClass3);

prueba

{

BeanUtils.setProperty(mainEntity,?detailName1,?detailList1) ;

BeanUtils.setProperty(mainEntity,?detailName2,detailList2);

BeanUtils.setProperty(mainEntity,?detailName3,?detailList3);

} p>

catch(Exception?ex)

{

throw?new?RuntimeException("¡La entidad de deserialización JSON de relación maestro-esclavo falló!") )

}

return?mainEntity;

}

/***

*?Deserializar texto JSON en principal Detallado entidad

*?@param?lt;Tgt;?Tipo de entidad maestra

*?@param?jsonString?Texto JSON

*?@param? ?Tipo de entidad principal

*?@param?detailClass?Almacenar los nombres y tipos de múltiples atributos de entidad subordinada en la entidad principal

*?Return

* /

public?static?lt;Tgt;?T?toBean(String?jsonString,?Classlt;Tgt;?mainClass,

HashMaplt;String,?Classgt;?detailClass)

{

JSONObject?jsonObject?=?JSONObject.

fromObject(jsonString);

T?mainEntity?=?JSONUtils.toBean(jsonObject,?mainClass);

para?(Object?key?:?detailClass.keySet())

{

probar

{

¿Clase?valor?=?(clase)?detailClass.get(clave);

p>

BeanUtils.setProperty(mainEntity,?key.toString(),?value);

}

catch?(Exception?ex)

{

catch? p>

{

throw?new?RuntimeException("¡Error en la entidad de deserialización JSON de la relación maestro-esclavo!" ) )

}

}

return?mainEntity;

}

/**

* ?Encapsular datos json transmitidos desde segundo plano

*?@param?obj

*/

public?static?void?outPutJson( Objeto?obj){

ActionContext?context?=?ActionContext.getContext();

HttpServletResponse?response?=?(HttpServletResponse)?context.get(ServletActionContext.HTTP_RESPONSE);

¿intentar?{

response.getWriter().print(obj);

}? ¿captura?(IOException?e)?{

e.printStackTrace();

}

}

}

}

// Clase de prueba

String?s1?=?"[{id:1,?pId:0,?name:\"test1\"? ,?open:true}]";?

Cadena? {id: 2,?pId: 1,?nombre:\"test211\"?,?open: true}";?

Cadena?{id: 3,?pId: 2,?nombre: \"test311\"?,?open: true}";?

Cadena?{id: 4,?pId: 1,?nombre:\"test411\"?,? open: true}" ;

Listlt;Stringgt;?listZtree?=?new?ArrayListlt;Stringgt;();

listZtree.add(s1);

listZtree.

listZtree.add(s2);

listZtree.add(s3);

listZtree.add(s4);

System.out.println(JSONUtils.toJSONString(listaZ

árbol));

}