javaWeb前后端中 JSON&JSON字符串&java实体对象 之间转换

    JSON是前端js语言中, 用来与其他语言交互的一种轻量级的数据交换格式, 交换时以字符串形式传递, 各语言再进行解析即可使用; 相比于XML语言, JSON用来传输数据, 层次结构清晰简单, 目前已基本取代XML, 广泛被用来跨语言传输数据; 

 

一. JSON的数据定义格式:

类型 语法 解释
对象类型 {name:value,name:value...}

其中name是字符串类型,而value是任意类型,

类似于java中的Map;

数组/集合类型 [value,value,value...] 其中value是任意类型
混合类型 [{},{}... ...] 或 {name:[]... ...} 合理包裹嵌套对象类型和数组类型

 

二. 基于实用的原则, 以下分讲:

 

1. 在js中解析Json字符串

    i. 方法: JSON.parse()

        用法:var jsonObj=JSON.parse(JASON字符串), 得到JSON

        注意: 这种方法可以安全地将获取到的JSON字符串转为JSON

    ii. 方法:eval()

        用法:var jsonObj = eval(“(“+json+”)”);

        注意:该方法会执行JSON字符串中可能存在的代码;

        另: 在字符串两侧拼接左右括号 ( 和 ) 是为了强制其将括号内内容作为解析对象解析成JSON, 使用时作为固定格式即可;

 

2. 在java中将对象, 集合, 数组转换为JSON字符串 (基于Jackson)

    代码如下:(使用 import com.fasterxml.jackson.databind.ObjectMapper;)

ObjectMapper om = new ObjectMapper();
String s = om.writeValueAsString(object);//object可以为任意对象

    注意: Object转换为JSON字符串时,仅放入成员属性,舍弃方法;

             其中: java对象和Map均将转为JSON中的对象格式, java数组和单列集合则转换为JSON的数组格式;

 

3. 在java中解析JSON字符串 (基于Jackson)

    i. 简单的解析:

        举例:

ObjectMapper om = new ObjectMapper();
Object object = om. readValue(json字符串,Object.calss)

     ii. 数组/集合内嵌Java对象格式解析:

        举例:

List<Category> list2 = om.readValue(s, new TypeReference<List<Category>>() {});

        注意: 这里需要用到: com.fasterxml.jackson.core.type.TypeReference;

                传入该接口匿名类对象作为readeVlaue的参数2即可;

                需要留意的是,需要定义出于与该结构中嵌套相同的Java类,否则直接用 "简单的解析:" 时,内层若碰到对象格式JSON, 则自动转换为LikedListMap类型;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章