1. O JSON-LIB é uma biblioteca de classes Java que fornece a função de converter objetos Java, incluindo feijões, mapas, coleções, matrizes Java e XML, em JSON ou conversão reversa.
2. Página inicial json-lib: http://json-lib.sourceforge.net/
3. Ambiente de execução
O seguinte suporte da biblioteca é necessário
Commons-Lang 2.5
Commons-Beanutils 1.8.0
Commons-Collections 3.2.1
Loging Commons 1.1.1
Ezmorph 1.0.6
4. Exemplos funcionais
Aqui está um exemplo de código dado pelo exemplo do Junit
A cópia do código é a seguinte:
pacote com.mai.json;
importar org.junit.assert.assertequals;
importar java.util.arraylist;
importar java.util.date;
importar java.util.hashmap;
importar java.util.iterator;
importar java.util.list;
importar java.util.map;
importação net.sf.ezmorph.morpher;
importação net.sf.ezmorph.morpherregistry;
importação net.sf.ezmorph.bean.beanmorpher;
importação net.sf.json.jsonArray;
importação net.sf.json.jsonObject;
importação net.sf.json.util.jsonutils;
importar org.apache.commons.beanutils.propertyutils;
importar org.junit.test;
classe pública jsonlibtest {
/*
* Tipos normais, lista, coleção etc. são todos analisados usando JsonArray
*
* Os tipos de mapa e personalizados são analisados usando JsonObject
* O mapa pode ser entendido como um objeto, e os pares de chave/valor dentro podem ser entendidos como os atributos/valores de atributo do objeto
* Isso é {Key1: Value1, Key2, Value2 ...}
*
* 1. JsonObject é um nome: Coleção de valores.
* Através de seu getjsonObject (chave), você pode obter um JsonObject, -> convertê -lo para mapear,
* Através de seu getjsonArray (chave), você pode obter um JsonArray,
*
*
*/
// geralmente converte matrizes para JSON
@Teste
public void testArrayTojson () {
boolean [] boolarray = new boolean [] {true, false, true};
JsonArray JsonArray = JsonArray.FromObject (Boolarray);
System.out.println (JsonArray);
// imprime [verdadeiro, falso, verdadeiro]
}
// Converter o objeto de coleção em JSON
@Teste
public void testlisttojson () {
Lista da lista = new ArrayList ();
list.add ("primeiro");
list.add ("Segundo");
JsonArray jsonArray = jsonArray.FromObject (List);
System.out.println (JsonArray);
// imprime ["primeiro", "segundo"]
}
// Converter String JSON em JSON, dependendo da situação, use JsonArray ou JsonObject
@Teste
public void testJSonsTrtojson () {
JsonArray jsonArray = jsonArray.FromObject ("['json', 'is', 'Easy']");
System.out.println (JsonArray);
// impressões ["json", "é", "fácil"]
}
// Converta o mapa em JSON, usando JsonObject
@Teste
public void testMaptojson () {
Mapa mapa = new hashmap ();
map.put ("nome", "json");
map.put ("bool", boolean.true);
map.put ("int", novo número inteiro (1));
map.put ("arr", new string [] {"a", "b"});
map.put ("func", "function (i) {return this.arr [i];}");
JsonObject jsonObject = jsonObject.FromObject (map);
System.out.println (JsonObject);
}
// tipo de composto Bean em JSON
@Teste
public void testbeadtojson () {
Mybean bean = new mybean ();
bean.setId ("001");
bean.setName ("cartão bancário");
bean.setDate (new Date ());
List Cardnum = new ArrayList ();
cardnum.add ("Banco Agrícola");
cardnum.add ("ICBC");
cardnum.add ("ccb");
cardnum.add (nova pessoa ("teste"));
bean.setcardnum (cardnum);
JsonObject jsonObject = jsonObject.FromObject (Bean);
System.out.println (JsonObject);
}
// converte JSON de tipo normal em objeto
@Teste
public void testJsontoObject () lança exceção {
String json = "{name =/" json/", bool: true, int: 1, duplo: 2.2, função: function (a) {return a;}, matriz: [1,2]}";
JsonObject jsonObject = jsonObject.FromObject (JSON);
System.out.println (JsonObject);
Objeto bean = jsonObject.Tobean (JsonObject);
assertequals (JsonObject.get ("Nome"), PropertyUtils.getProperty (Bean, "Nome"));
assertequals (JsonObject.get ("bool"), Propertyutils.getProperty (Bean, "Bool"));
assertequals (JsonObject.get ("int"), Propertyutils.getProperty (Bean, "int"));
assertequals (JsonObject.get ("Double"), Propertyutils.getProperty (Bean, "Double"));
assertequals (JsonObject.get ("func"), Propertyutils.getProperty (Bean, "Func"));
System.out.println (PropertyUtils.getProperty (Bean, "Nome"));
System.out.println (Propertyutils.getProperty (Bean, "Bool"));
System.out.println (Propertyutils.getProperty (Bean, "int"));
System.out.println (Propertyutils.getProperty (Bean, "Double"));
System.out.println (Propertyutils.getProperty (Bean, "Func"));
System.out.println (Propertyutils.getProperty (Bean, "Array"));
List ArrayList = (List) JsonArray.Tocollection (JsonObject.getjsonArray ("Array"));
for (objeto objeto: ArrayList) {
System.out.println (objeto);
}
}
// Parse json em um objeto de tipo composto, incluindo a lista
@Teste
public void testJSontoBeHavalist () {
String json = "{list: [{name: 'test1'}, {name: 'test2'}], mapa: {test1: {name: 'test1'}, test2: {name: 'test2'}}}}" ;
// string json = "{list: [{name: 'test1'}, {name: 'test2'}]}";
Mapa ClassMap = new Hashmap ();
ClassMap.put ("List", Person.class);
Mybeanwithperson diybean = (mybeanwithperson) jsonObject.tobean (jsonObject.FromObject (json), mybeanwithperson.class, classe);
System.out.println (diybean);
Lista da lista = diybean.getList ();
para (objeto o: list) {
if (o instância de pessoa) {
Pessoa p = (pessoa) o;
System.out.println (p.getName ());
}
}
}
// analisar JSON em um objeto do tipo composto, incluindo mapa
@Teste
public void testJSontoBeAnhavamap () {
// Pense no mapa como um objeto
String json = "{list: [{name: 'test1'}, {name: 'test2'}], mapa: {testone: {name: 'test1'}, testtwo: {name: 'test2'}}}" ;
Mapa ClassMap = new Hashmap ();
ClassMap.put ("List", Person.class);
ClassMap.put ("map", map.class);
// Use a dica, analise diretamente o JSON em um objeto personalizado especificado, onde a lista é totalmente analisada, o mapa não é totalmente analisado
Mybeanwithperson diybean = (mybeanwithperson) jsonObject.tobean (jsonObject.FromObject (json), mybeanwithperson.class, classe);
System.out.println (diybean);
System.out.println ("Faça a versão da lista");
List <Pesso> list = diybean.getList ();
para (Pessoa O: Lista) {
Pessoa p = (pessoa) o;
System.out.println (p.getName ());
}
System.out.println ("Faça a versão do mapa");
// Registre o transformador no registro primeiro e você precisa usar a classe no pacote Ezmorph
Morpherregistry morpherregistry = jsonutils.getMorpherRegistry ();
Morpher Dynamorpher = New BeanMorpher (Person.class, Morpherregistry);
MorpherRegistry.RegisterMorpher (Dynamorpher);
Mapa mapa = diybean.getMap ();
/*O mapa aqui não tem dicas de tipo, portanto, de acordo com o padrão, o objeto armazenado é um tipo net.sf.ezmorph.bean.morphdynabean*/
System.out.println (map);
/*Saída:
{testone=net.sf.ezmorph.bean.morphdynabean@f73c1 [
{name = test1}
], testtwo=net.sf.ezmorph.bean.morphdynabean@186c6b2 [
{name = test2}
]}
*/
List <Pesso> output = new ArrayList ();
for (iterator i = map.values (). iterator (); i.hasnext ();) {
// Use o registrador para executar a transformação de objetos no dinabean especificado
output.Add ((Person) morpherregistry.morph (Person.class, i.Next ()));
}
para (Pessoa P: Saída) {
System.out.println (p.getName ());
/*Saída:
Test1
Test2
*/
}
}
}
5. A seguir, fornece os recursos necessários para o exemplo acima, incluindo pacotes de jar e código
/Files/MailingFeng/JSON-LIB/JSON-LIB Case requer pacotes JAR e Java Classes.rar