「javajson解包」jar解包

博主:adminadmin 2022-11-25 11:12:06 69

今天给各位分享javajson解包的知识,其中也会对jar解包进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java解析json数据

一、 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。

Json建构于两种结构:

1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 如:

{

“name”:”jackson”,

“age”:100

}

2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)如:

{

“students”:

[

{“name”:”jackson”,“age”:100},

{“name”:”michael”,”age”:51}

]

}

二、java解析JSON步骤

A、服务器端将数据转换成json字符串

首先、服务器端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些可以到JSON-lib官网下载:)

然后将数据转为json字符串,核心函数是:

public static String createJsonString(String key, Object value)

{

JSONObject jsonObject = new JSONObject();

jsonObject.put(key, value);

return jsonObject.toString();

}

B、客户端将json字符串转换为相应的javaBean

1、客户端获取json字符串(因为android项目中已经集成了json的jar包所以这里无需导入)

public class HttpUtil

{

public static String getJsonContent(String urlStr)

{

try

{// 获取HttpURLConnection连接对象

URL url = new URL(urlStr);

HttpURLConnection httpConn = (HttpURLConnection) url

.openConnection();

// 设置连接属性

httpConn.setConnectTimeout(3000);

httpConn.setDoInput(true);

httpConn.setRequestMethod("GET");

// 获取相应码

int respCode = httpConn.getResponseCode();

if (respCode == 200)

{

return ConvertStream2Json(httpConn.getInputStream());

}

}

catch (MalformedURLException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

return "";

}

private static String ConvertStream2Json(InputStream inputStream)

{

String jsonStr = "";

// ByteArrayOutputStream相当于内存输出流

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = 0;

// 将输入流转移到内存输出流中

try

{

while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)

{

out.write(buffer, 0, len);

}

// 将内存流转换为字符串

jsonStr = new String(out.toByteArray());

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

return jsonStr;

}

}

2、获取javaBean

public static Person getPerson(String jsonStr)

{

Person person = new Person();

try

{// 将json字符串转换为json对象

JSONObject jsonObj = new JSONObject(jsonStr);

// 得到指定json key对象的value对象

JSONObject personObj = jsonObj.getJSONObject("person");

// 获取之对象的所有属性

person.setId(personObj.getInt("id"));

person.setName(personObj.getString("name"));

person.setAddress(personObj.getString("address"));

}

catch (JSONException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

return person;

}

public static ListPerson getPersons(String jsonStr)

{

ListPerson list = new ArrayListPerson();

JSONObject jsonObj;

try

{// 将json字符串转换为json对象

jsonObj = new JSONObject(jsonStr);

// 得到指定json key对象的value对象

JSONArray personList = jsonObj.getJSONArray("persons");

// 遍历jsonArray

for (int i = 0; i personList.length(); i++)

{

// 获取每一个json对象

JSONObject jsonItem = personList.getJSONObject(i);

// 获取每一个json对象的值

Person person = new Person();

person.setId(jsonItem.getInt("id"));

person.setName(jsonItem.getString("name"));

person.setAddress(jsonItem.getString("address"));

list.add(person);

}

}

catch (JSONException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

java解析json字符串数据

这个需要导入个jar包的,自己写太麻烦,而且要考虑特殊字符的转义的。

1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。

2. json-lib 主页 : 

3.执行环境

需要以下类库支持

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6

4.功能示例

这里通过JUnit-Case例子给出代码示例

  

package com.mai.json;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import net.sf.ezmorph.Morpher;

import net.sf.ezmorph.MorpherRegistry;

import net.sf.ezmorph.bean.BeanMorpher;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import net.sf.json.util.JSONUtils;

import org.apache.commons.beanutils.PropertyUtils;

import org.junit.Test;

public class JsonLibTest {

    /*

     *  普通类型、List、Collection等都是用JSONArray解析

     *  

     *  Map、自定义类型是用JSONObject解析

     *  可以将Map理解成一个对象,里面的key/value对可以理解成对象的属性/属性值

     *  即{key1:value1,key2,value2......}

     * 

     * 1.JSONObject是一个name:values集合,通过它的get(key)方法取得的是key后对应的value部分(字符串)

     *         通过它的getJSONObject(key)可以取到一个JSONObject,-- 转换成map,

     *         通过它的getJSONArray(key) 可以取到一个JSONArray ,

     * 

     * 

     */

    

    //一般数组转换成JSON

    @Test

    public void testArrayToJSON(){

        boolean[] boolArray = new boolean[]{true,false,true};  

        JSONArray jsonArray = JSONArray.fromObject( boolArray );  

        System.out.println( jsonArray );  

        // prints [true,false,true]  

    }

    

    

    //Collection对象转换成JSON

    @Test

    public void testListToJSON(){

        List list = new ArrayList();  

        list.add( "first" );  

        list.add( "second" );  

        JSONArray jsonArray = JSONArray.fromObject( list );  

        System.out.println( jsonArray );  

        // prints ["first","second"]  

    }

    

    

    //字符串json转换成json, 根据情况是用JSONArray或JSONObject

    @Test

    public void testJsonStrToJSON(){

        JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" );  

        System.out.println( jsonArray );  

        // prints ["json","is","easy"]  

    }

    

    

    //Map转换成json, 是用jsonObject

    @Test

    public void testMapToJSON(){

        Map map = new HashMap();  

        map.put( "name", "json" );  

        map.put( "bool", Boolean.TRUE );  

        map.put( "int", new Integer(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 );  

    }

    

    //复合类型bean转成成json

    @Test

    public void testBeadToJSON(){

        MyBean bean = new MyBean();

        bean.setId("001");

        bean.setName("银行卡");

        bean.setDate(new Date());

        

        List cardNum = new ArrayList();

        cardNum.add("农行");

        cardNum.add("工行");

        cardNum.add("建行");

        cardNum.add(new Person("test"));

        

        bean.setCardNum(cardNum);

        

        JSONObject jsonObject = JSONObject.fromObject(bean);

        System.out.println(jsonObject);

        

    }

    

    //普通类型的json转换成对象

    @Test

    public void testJSONToObject() throws Exception{

        String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";  

        JSONObject jsonObject = JSONObject.fromObject( json ); 

        System.out.println(jsonObject);

        Object bean = JSONObject.toBean( jsonObject ); 

        assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );  

        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, "name"));

        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(Object object : arrayList){

            System.out.println(object);

        }

        

    }

    

    

    //将json解析成复合类型对象, 包含List

    @Test

    public void testJSONToBeanHavaList(){

        String json = "{list:[{name:'test1'},{name:'test2'}],map:{test1:{name:'test1'},test2:{name:'test2'}}}";

//        String json = "{list:[{name:'test1'},{name:'test2'}]}";

        Map classMap = new HashMap();

        classMap.put("list", Person.class);

        MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);

        System.out.println(diyBean);

        

        List list = diyBean.getList();

        for(Object o : list){

            if(o instanceof Person){

                Person p = (Person)o;

                System.out.println(p.getName());

            }

        }

    }

    

    

    //将json解析成复合类型对象, 包含Map

    @Test

    public void testJSONToBeanHavaMap(){

        //把Map看成一个对象

        String json = "{list:[{name:'test1'},{name:'test2'}],map:{testOne:{name:'test1'},testTwo:{name:'test2'}}}";

        Map classMap = new HashMap();

        classMap.put("list", Person.class);

        classMap.put("map", Map.class);

        //使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析

        MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);

        System.out.println(diyBean);

        

        System.out.println("do the list release");

        ListPerson list = diyBean.getList();

        for(Person o : list){

            Person p = (Person)o;

            System.out.println(p.getName());

        }

        

        System.out.println("do the map release");

        

        //先往注册器中注册变换器,需要用到ezmorph包中的类

        MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();

        Morpher dynaMorpher = new BeanMorpher( Person.class,  morpherRegistry);  

        morpherRegistry.registerMorpher( dynaMorpher );  

        

        

        Map map = diyBean.getMap();

        /*这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象*/

        System.out.println(map);

/*输出:

{testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[

  {name=test1}

], testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[

  {name=test2}

]}

*/

        ListPerson output = new ArrayList();  

        for( Iterator i = map.values().iterator(); i.hasNext(); ){  

            //使用注册器对指定DynaBean进行对象变换

           output.add( (Person)morpherRegistry.morph( Person.class, i.next() ) );  

        }  

        

        for(Person p : output){

            System.out.println(p.getName());

/*输出:

test1

test2

*/

        }

        

    }

    

    

    

}

java解析json格式文件,再保存在数据库怎么做?

java解析json格式文件,再保存在数据库的方法:

1:定义一个实体类

2:用json lib将json字符串转为Java对象

3:用jdbc或hibernate将java对象存入数据库

直接读写文件,再把读出来的文件内容格式化成json,再用JDBC、Mybatis或者其他框架将json数据存入数据库。

假设实体类是这样的:

public class ElectSet {

public String xueqi;

public String xuenian;

public String startTime;

public String endTime;

public int menshu;

public String isReadDB;

//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}

public String getXueqi() {

   return xueqi;

}

public void setXueqi(String xueqi) {

   this.xueqi = xueqi;

}

public String getXuenian() {

   return xuenian;

}

public void setXuenian(String xuenian) {

   this.xuenian = xuenian;

}

public String getStartTime() {

   return startTime;

}

public void setStartTime(String startTime) {

   this.startTime = startTime;

}

public String getEndTime() {

   return endTime;

}

public void setEndTime(String endTime) {

   this.endTime = endTime;

}

public int getMenshu() {

   return menshu;

}

public void setMenshu(int menshu) {

   this.menshu = menshu;

}

public String getIsReadDB() {

   return isReadDB;

}

public void setIsReadDB(String isReadDB) {

   this.isReadDB = isReadDB;

}

 

}

有一个json格式的文件,存的信息如下:

Sets.json:

{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}

具体操作:

/*

* 取出文件内容,填充对象

*/

public ElectSet findElectSet(String path){

   ElectSet electset=new ElectSet();

   String sets=ReadFile(path);//获得json文件的内容

   JSONObject jo=JSONObject.fromObject(sets);//格式化成json对象

   //System.out.println("------------" jo);

   //String name = jo.getString("xuenian");

   //System.out.println(name);

   electset.setXueqi(jo.getString("xueqi"));

   electset.setXuenian(jo.getString("xuenian"));

   electset.setStartTime(jo.getString("startTime"));

   electset.setEndTime(jo.getString("endTime"));

   electset.setMenshu(jo.getInt("menshu"));

   electset.setIsReadDB(jo.getString("isReadDB"));

   return electset;

}

//设置属性,并保存

public boolean setElect(String path,String sets){

   try {

    writeFile(path,sets);

    return true;

   } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    return false;

   }

}

//读文件,返回字符串

public String ReadFile(String path){

    File file = new File(path);

    BufferedReader reader = null;

    String laststr = "";

    try {

     //System.out.println("以行为单位读取文件内容,一次读一整行:");

     reader = new BufferedReader(new FileReader(file));

     String tempString = null;

     int line = 1;

     //一次读入一行,直到读入null为文件结束

     while ((tempString = reader.readLine()) != null) {

      //显示行号

      System.out.println("line " line ": " tempString);

      laststr = laststr tempString;

      line ;

     }

     reader.close();

    } catch (IOException e) {

     e.printStackTrace();

    } finally {

     if (reader != null) {

      try {

       reader.close();

      } catch (IOException e1) {

      }

     }

    }

    return laststr;

}

将获取到的字符串,入库即可。

javajson解包的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于jar解包、javajson解包的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。