fastjson如何解析json?fastjson哪些特性?

阳光 2021-09-18 19:40:01 java常见问答 5536

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。那fastjson如何解析json?下面来我们就来给大家讲解一下fastjson解析json的方法。

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

首先、服务器端项目要导入阿里巴巴的fastjson的jar包至builtPath路径下,这些可以到fastjson官网下载.

fastjson如何解析json?fastjson哪些特性?.jpg

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

public static String createJsonString(Object value)
{
    String alibabaJson = JSON.toJSONString(value);
    return alibabaJson;
}

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

首先客户端也要导入fastjson的两个jar包

1、客户端获取json字符串

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 T getPerson(String jsonString, Class cls)
{
    T t = null;
    try
    {
        t = JSON.parseObject(jsonString, cls);
    }
    catch (Exception e)
    {
        // TODO: handle exception
    }
    return t;
}
public static List getPersons(String jsonString, Class cls)
{
    List list = new ArrayList();
    try
    {
        list = JSON.parseArray(jsonString, cls);
    }
    catch (Exception e)
    {}
    return list;
}
public static List > listKeyMaps(String jsonString)
{
    List > list = new ArrayList > ();
    try
    {
        list = JSON.parseObject(jsonString
            , new TypeReference >> ()
            {});
    }
    catch (Exception e)
    {
        // TODO: handle exception
    }
    return list;
}
}

fastjson哪些特性?

1.提供服务器端、安卓客户端两种解析工具,性能表现较好。

2.提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

3.允许转换预先存在的无法修改的对象(只有class、无源代码)。

4.Java泛型的广泛支持。

5.允许对象的自定义表示、允许自定义序列化类。

6.支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

总之Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。另外如果大家想要解析json,我们可以参考以上文章!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

java线程面试题怎么做?java线程面试题分享

java的网络编程重要吗?详情分析

java运行出现JNI错误怎么办?Java运行环境是什么?