fastjson怎么查看版本?

阳光 2021-03-09 16:14:38 java常见问答 5780

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 < linkedmap > column;
    private ListcolumnList;
    public String getId()
    {
        return id;
    }
    public void setId(String id)
    {
        this.id = id;
    }
    //这里省略部分getter与setter方法
    public List < linkedmap > getColumn()
    {
        return column;
    }
    public void setColumn(List < linkedmap > 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 < linkedmap > 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工具网。

推荐阅读:

java面试题太多了记不下来怎么办?

json怎么用?使用json有什么优势?

java权限管理框架有哪些?