FastJSON是一个Java语言编写的高性能,功能完善,可是在使用的过程中,想查看fastjson的版本如何操作?那么今天我们就给大家讲解一下fastjson查看版本的方法。

看Maven的pom.xml配置文件fastjson1.2.13

fastjson如何解析复杂嵌套json字符串?

这个实例是我在开发中用到的,先给出要解析的json字符串[

{

"id": "user_list"

, "key": "id"

, "tableName": "用户列表"

, "className": "cn.dmego.domain.User"

, "column": [

{

"key": "rowIndex"

, "header": "序号"

, "width": "50"

, "allowSort": "false"

},

{

"key": "id"

, "header": "id"

, "hidden": "true"

},

{

"key": "name"

, "header": "姓名"

, "width": "100"

, "allowSort": "true"

}

]

},

{

"id": "role_list"

, "key": "id"

, "tableName": "角色列表"

, "className": "cn.dmego.domain.Role"

, "column": [

{

"key": "rowIndex"

, "header": "序号"

, "width": "50"

, "allowSort": "false"

},

{

"key": "id"

, "header": "id"

, "hidden": "true"

},

{

"key": "name"

, "header": "名称"

, "width": "100"

, "allowSort": "true"

}

]

}

]

要想解析这种复杂的字符串,首先得先定义好与之相符的java POJO

对象,经过观察,我们发现,这个是一个json对象数组,每一个对象里包含了许多属性,其中还有一个属性的类型也是对象数组。所有,我们从里到外,先定义最里面的对象:public class Column

{

private String key;

private String header;

private String width;

private String allowSort;

private String hidden;

public String getKey()

{

return key;

}

public void setKey(String key)

{

this.key = key;

}

//这里省略部分getter与setter方法

}

再定义外层的对象:import java.util.List;

import org.apache.commons.collections4.map.LinkedMap;

public class Query

{

private String id;

private String key;

private String tableName;

private String className;

private List  column;

private ListcolumnList;

public String getId()

{

return id;

}

public void setId(String id)

{

this.id = id;

}

//这里省略部分getter与setter方法

public List  getColumn()

{

return column;

}

public void setColumn(List  column)

{

this.column = column;

}

public ListgetColumnList()

{

return columnList;

}

public void setColumnList(ListcolumnList)

{

this.columnList = columnList;

}

}

我的这个json文件放置在类路径下,最后想将这个json字符串转化为List对象,并且将column 对象数组转化为query对象里的List属性

而实际转化过程中,fastjson将column对象数组转化为List;所有我们还需要将Map类型转化为object类型才能满足需求。/**

* 读取类路径下的配置文件

* 解析成对象数组并返回

* @throws IOException

*/

@Test

public Listtest() throws IOException

{

// 读取类路径下的query.json文件

ClassLoader cl = this.getClass()

.getClassLoader();

InputStream inputStream = cl.getResourceAsStream("query.json");

String jsontext = IOUtils.toString(inputStream, "utf8");

// 先将字符jie串转为List数组

ListqueryList = JSON.parseArray(jsontext, Query.class);

for (Query query: queryList)

{

ListcolumnList = new ArrayList();

List  columns = query.getColumn();

for (LinkedMaplinkedMap: columns)

{

//将map转化为java实体类

Column column = (Column) map2Object(linkedMap, Column.class);

System.out.println(column.toString());

columnList.add(column);

}

query.setColumnList(columnList); //为columnList属性赋值

}

return queryList;

}

/**

* Map转成实体对象

* @param map map实体对象包含属性

* @param clazz 实体对象类型

* @return

*/

public static Object map2Object(Mapmap, Class clazz)

{

if (map == null)

{

return null;

}

Object obj = null;

try

{

obj = clazz.newInstance();

Field[] fields = obj.getClass()

.getDeclaredFields();

for (Field field: fields)

{

int mod = field.getModifiers();

if (Modifier.isStatic(mod) || Modifier.isFinal(mod))

{

continue;

}

field.setAccessible(true);

String flag = (String) map.get(field.getName());

if (flag != null)

{

if (flag.equals("false") || flag.equals("true"))

{

field.set(obj, Boolean.parseBoolean(flag));

}

else

{

field.set(obj, map.get(field.getName()));

}

}

}

}

catch (Exception e)

{

e.printStackTrace();

}

return obj;

}

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java

对象。这是作为java人员所要掌握的基本知识哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

GitHub 加速计划 / fastj / fastjson
25.69 K
6.51 K
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:3 个月前 )
c942c834 - 1 年前
5bc4709b - 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐