最简单简洁高效的json数据解析

mfmdaoyou      2022-02-12     271

关键词:

一.无图无真相
技术分享
技术分享
二.主要代码
1.导入jar包

拷贝fastjson.jar包到projectlibs包下

2.封装工具类JsonUtil.java

package com.example.parsejsondemo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

/**
 * Json解析的工具类
 * 
 * @author 孤狼
 * @since 2015-8-8
 */

public class JsonUtil {

    /**
     * 将JSON转成 数组类型对象
     *
     * @param json
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> List<T> getListFromString(String json, Class<T> clazz) {
        List<T> t = null;
        try {
            t = JSON.parseArray(json, clazz);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }

    /**
     * 将list转换成String
     *
     * @param list
     *            准备转换的集合
     * @return string
     * @throws Exception
     */
    public static String getStringFromList(List list) {
        String string = "";
        try {
            string = JSON.toJSONString(list, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return string;
    }

    /**
     * 将java对象转换成json字符串
     *
     * @param obj
     *            准备转换的对象
     * @return json字符串
     * @throws Exception
     */
    public static String getStringFromObject(Object obj) {
        String json = "";
        try {
            json = JSON.toJSONString(obj, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;
    }

    /**
     * 将json字符串转换成java对象
     *
     * @param json
     * @param clazz
     * @param <T>
     * @return object
     */
    public static <T> T getObjectFromString(String json, Class<T> clazz) {
        T t = null;
        try {
            t = JSON.parseObject(json, clazz);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }

    /**
     * 将 json 字符串转为 JSONArray 对象;
     *
     * @param json
     * @return JsonArray
     */
    public static JSONArray getJsonArray(String json) {
        JSONArray array = null;
        try {
            array = JSON.parseArray(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return array;
    }

    /**
     * 将 json 字符串转为 JSONObect 对象
     *
     * @param json
     * @return JSONObject
     */
    public static JSONObject getJsonObject(String json) {
        JSONObject object = null;
        try {
            object = (JSONObject) JSON.parse(json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return object;
    }
}

3.封装数据实体类(实例:ArticleBean.java和ArticleDetailBean.java)

package com.example.parsejsondemo;

import java.util.ArrayList;
import java.util.List;

/**
 * 文章实体类
 * 
 * @author 孤狼
 * @since 2015-8-8
 */
public class ArticleBean {

    private String title = "";
    private String title_image_url = "";
    private String create_time = "";
    private long article_id = 0;
    // 查看用户的信息
    private List<UserInfoBean> headimages = new ArrayList<UserInfoBean>();

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle_image_url() {
        return title_image_url;
    }

    public void setTitle_image_url(String title_image_url) {
        this.title_image_url = title_image_url;
    }

    public String getCreate_time() {
        return create_time;
    }

    public void setCreate_time(String create_time) {
        this.create_time = create_time;
    }

    public List<UserInfoBean> getHeadimages() {
        return headimages;
    }

    public void setHeadimages(List<UserInfoBean> headimages) {
        this.headimages = headimages;
    }

    public long getArticle_id() {
        return article_id;
    }

    public void setArticle_id(long article_id) {
        this.article_id = article_id;
    }
}
package com.example.parsejsondemo;

import java.util.ArrayList;
import java.util.List;

/**
 * 文章详情
 * 
 * @author 孤狼
 * @since 2015-8-8
 */
public class ArticleDetailBean {

    private String content;
    // 图片集合类
    private List<ImageResult> images = new ArrayList<ImageResult>();
    private String create_time;
    // 点赞状态
    private boolean if_dianzan;
    // 评论数
    private int comment_num;
    // 第几期 例:第5期
    private String times;
    private String title;
    private long article_id;
    private int dianzan_num;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getCreate_time() {
        return create_time;
    }

    public void setCreate_time(String create_time) {
        this.create_time = create_time;
    }

    public boolean isIf_dianzan() {
        return if_dianzan;
    }

    public void setIf_dianzan(boolean if_dianzan) {
        this.if_dianzan = if_dianzan;
    }

    public int getComment_num() {
        return comment_num;
    }

    public void setComment_num(int comment_num) {
        this.comment_num = comment_num;
    }

    public String getTimes() {
        return times;
    }

    public void setTimes(String times) {
        this.times = times;
    }

    public long getArticle_id() {
        return article_id;
    }

    public void setArticle_id(long article_id) {
        this.article_id = article_id;
    }

    public int getDianzan_num() {
        return dianzan_num;
    }

    public void setDianzan_num(int dianzan_num) {
        this.dianzan_num = dianzan_num;
    }

    public List<ImageResult> getImages() {
        return images;
    }

    public void setImages(List<ImageResult> images) {
        this.images = images;
    }

    @Override
    public String toString() {
        return "ArticleDetailResult [title=" + title + ", content=" + content
                + ", create_time=" + create_time + ", comment_num="
                + comment_num + ", times=" + times + ", article_id="
                + article_id + ", dianzan_num=" + dianzan_num + "]";
    }

}

4.代码中调用
a.解析 JsonList类型

package com.example.parsejsondemo;

import java.util.List;

import com.nostra13.universalimageloader.core.ImageLoader;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

/**
 * 解析 JsonList类型
 *
 * @author 孤狼
 * @since 2015-8-8
 * */
public class JsonListActivity extends Activity {
    private String data = "[ { "article_id": 682, "create_time": "12:13", "headimages": [], "title": "给你的一封情书", "title_image_url": "http://e.hiphotos.baidu.com/image/w%3D310/sign=d0aa9ba85eb5c9ea62f305e2e538b622/b90e7bec54e736d1cb1f21ab9e504fc2d5626901.jpg" }, { "article_id": 681, "create_time": "12:13", "headimages": [], "title": "女人,你的别名是愚蠢", "title_image_url": "http://f.hiphotos.baidu.com/image/w%3D310/sign=ef8e5a82778b4710ce2ffbcdf3cfc3b2/72f082025aafa40f1ed46c7eae64034f78f01906.jpg" }, { "article_id": 680, "create_time": "12:13", "headimages": [], "title": "明确", "title_image_url": "http://g.hiphotos.baidu.com/image/w%3D310/sign=5c6d742fe4fe9925cb0c6f5104a95ee4/3ac79f3df8dcd100dce594cb768b4710b8122fda.jpg" }, { "article_id": 679, "create_time": "12:13", "headimages": [], "title": "秋之随想", "title_image_url": "http://d.hiphotos.baidu.com/image/w%3D310/sign=f9fd8128e9c4b7453494b117fffd1e78/0bd162d9f2d3572ce2779bdd8813632762d0c31e.jpg" }, { "article_id": 681, "create_time": "12:13", "headimages": [], "title": "女人,你的别名是愚蠢", "title_image_url": "http://f.hiphotos.baidu.com/image/w%3D310/sign=ef8e5a82778b4710ce2ffbcdf3cfc3b2/72f082025aafa40f1ed46c7eae64034f78f01906.jpg" }, { "article_id": 680, "create_time": "12:13", "headimages": [], "title": "明确", "title_image_url": "http://g.hiphotos.baidu.com/image/w%3D310/sign=5c6d742fe4fe9925cb0c6f5104a95ee4/3ac79f3df8dcd100dce594cb768b4710b8122fda.jpg" }, { "article_id": 679, "create_time": "12:13", "headimages": [], "title": "秋之随想", "title_image_url": "http://d.hiphotos.baidu.com/image/w%3D310/sign=f9fd8128e9c4b7453494b117fffd1e78/0bd162d9f2d3572ce2779bdd8813632762d0c31e.jpg" }, { "article_id": 681, "create_time": "12:13", "headimages": [], "title": "女人,你的别名是愚蠢", "title_image_url": "http://f.hiphotos.baidu.com/image/w%3D310/sign=ef8e5a82778b4710ce2ffbcdf3cfc3b2/72f082025aafa40f1ed46c7eae64034f78f01906.jpg" }, { "article_id": 680, "create_time": "12:13", "headimages": [], "title": "明确", "title_image_url": "http://g.hiphotos.baidu.com/image/w%3D310/sign=5c6d742fe4fe9925cb0c6f5104a95ee4/3ac79f3df8dcd100dce594cb768b4710b8122fda.jpg" }, { "article_id": 679, "create_time": "12:13", "headimages": [], "title": "秋之随想", "title_image_url": "http://d.hiphotos.baidu.com/image/w%3D310/sign=f9fd8128e9c4b7453494b117fffd1e78/0bd162d9f2d3572ce2779bdd8813632762d0c31e.jpg" }, { "article_id": 681, "create_time": "12:13", "headimages": [], "title": "女人。你的别名是愚蠢", "title_image_url": "http://f.hiphotos.baidu.com/image/w%3D310/sign=ef8e5a82778b4710ce2ffbcdf3cfc3b2/72f082025aafa40f1ed46c7eae64034f78f01906.jpg" }, { "article_id": 680, "create_time": "12:13", "headimages": [], "title": "明确", "title_image_url": "http://g.hiphotos.baidu.com/image/w%3D310/sign=5c6d742fe4fe9925cb0c6f5104a95ee4/3ac79f3df8dcd100dce594cb768b4710b8122fda.jpg" }, { "article_id": 679, "create_time": "12:13", "headimages": [], "title": "秋之随想", "title_image_url": "http://d.hiphotos.baidu.com/image/w%3D310/sign=f9fd8128e9c4b7453494b117fffd1e78/0bd162d9f2d3572ce2779bdd8813632762d0c31e.jpg" } ]";
    private List<ArticleBean> list;
    private ListView listView;
    private ImageLoader instance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        instance = ImageLoader.getInstance();
        listView = (ListView) findViewById(R.id.listView);
        // 把String类型的json解析成List集合
        list = JsonUtil.getListFromString(data, ArticleBean.class);
        // 设置适配器
        listView.setAdapter(new CustomAdapter());
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                startActivity(new Intent(JsonListActivity.this,
                        JsonObjectActivity.class));
            }
        });
    }

    // 定义适配器
    class CustomAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // 查找控件
            ViewHold hold;
            if (convertView != null) {
                hold = (ViewHold) convertView.getTag();
            } else {
                hold = new ViewHold();
                convertView = View.inflate(getApplicationContext(),
                        R.layout.list_item, null);
                hold.iv_cover = (ImageView) convertView
                        .findViewById(R.id.iv_coner);
                hold.tv_time = (TextView) convertView
                        .findViewById(R.id.tv_time);
                hold.tv_title = (TextView) convertView
                        .findViewById(R.id.tv_title);
                convertView.setTag(hold);
            }
            // 填充数据
            hold.tv_time.setText("孤狼   公布时间:"
                    + list.get(position).getCreate_time());
            hold.tv_title.setText(list.get(position).getTitle());
            instance.displayImage(list.get(position).getTitle_image_url(),
                    hold.iv_cover);
            return convertView;
        }

        class ViewHold {
            private ImageView iv_cover;
            private TextView tv_title;
            private TextView tv_time;
        }
    }
}

b.解析 JsonObject类型

package com.example.parsejsondemo;

import com.nostra13.universalimageloader.core.ImageLoader;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * 解析 JsonObject类型
 *
 * @author 孤狼
 * @since 2015-8-8
 * */
public class JsonObjectActivity extends Activity {
    // json数据
    private String data = "{ "article_id": 682, "comment_num": 26, "content": "你是清晨,\r\n是我醒来后的第一缕,\r\n是我起床后的第一缕清风。\r\n是我看见的第一抹浓绿色。\r\n你是的阳光温暖我的。\r\n你是中午,\r\n是手中香甜的饭菜。\r\n是我午睡时躺着的枕头。

\r\n你是晚上,\r\n是黑中的一屡凉爽,\r\n是黑暗中的平静心态,\r\n是惊恐中的心灵安慰。\r\n是天空中的闪烁繁星,\r\n你是我最遥远的。\r\n我的恋人。

\r\n", "create_time": "06-12 12:13", "dianzan_num": 411, "if_dianzan": true, "images": [ { "image_id": 3595, "image_url": "http://e.hiphotos.baidu.com/image/w%3D310/sign=d0aa9ba85eb5c9ea62f305e2e538b622/b90e7bec54e736d1cb1f21ab9e504fc2d5626901.jpg" }, { "image_id": 3596, "image_url": "http://7xjora.com2.z0.glb.qiniucdn.com/644121332662Etjmn.jpg?imageView2/0/w/500/h/500" }, { "image_id": 3597, "image_url": "http://7xjora.com2.z0.glb.qiniucdn.com/1650121333675aY09a.jpg?imageView2/0/w/500/h/500" }, { "image_id": 3598, "image_url": "http://7xjora.com2.z0.glb.qiniucdn.com/120712133440245oBv.jpg?imageView2/0/w/500/h/500" }, { "image_id": 3599, "image_url": "http://7xjora.com2.z0.glb.qiniucdn.com/940121334941gy1Ii.jpg?

imageView2/0/w/500/h/500" } ], "times": "第682期", "title": "给你的一封情书" }"; private ImageLoader instance; private TextView tv_title; private TextView tv_time; private ImageView iv_cover; private ArticleDetailBean detailBean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_object); instance = ImageLoader.getInstance(); iv_cover = (ImageView) findViewById(R.id.iv_coner); tv_time = (TextView) findViewById(R.id.tv_time); tv_title = (TextView) findViewById(R.id.tv_title); // 把json数据解析成Object类型实体类 detailBean = JsonUtil .getObjectFromString(data, ArticleDetailBean.class); // 填充数据 tv_title.setText(detailBean.getTitle()); tv_time.setText(detailBean.getContent()); instance.displayImage(detailBean.getImages().get(0).getImage_url(), iv_cover); } }

三.说明

Json数据是client和服务端交互的主要形式之中的一个,解析Json的方法工具也非常多,比方goole的Gson(能够去看前面关于Gson解析数据的方法)等等,而fastjson.jar解析json数据感觉非常强大高效和简洁。有用非常easy:引入jar包—>封装工具类—–>封装要解析的数据对象—>调用工具解析。代码非常easy。如有疑问请留言—-孤狼

四.实例Demo

最简单高效简洁好用的Json解析






解析 JSON 响应的最简单方法

】解析JSON响应的最简单方法【英文标题】:EasiestwaytoparseJSONresponse【发布时间】:2016-03-0617:34:26【问题描述】:有没有什么简单的方法可以在c#下面解析JSOn"type":"text","totalprice":"0.0045","totalgsm":"1","remaincredit":"44.92293","messages":["status... 查看详情

ios中json解析出现的null问题

...常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式。问题现象但是几个项目下来一直遇到一个坑爹的问题,程序在获取某些数据之后莫名崩溃。其实很早就发现了原因:由于服务器的数据库中有些字段为空... 查看详情

最高效的python爬虫框架有几个

...据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知urlpattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框... 查看详情

ios中json解析出现的null问题

...常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式。问题现象但是几个项目下来一直遇到一个坑爹的问题,程序在获取某些数据之后莫名崩溃。其实很早就发现了原因:由于服务器的数据库中有些字段为空... 查看详情

将 JSON 字符串解析为对象的最简单的 C# 函数是啥? [关闭]

】将JSON字符串解析为对象的最简单的C#函数是啥?[关闭]【英文标题】:WhatisthesimplestC#functiontoparseaJSONstringintoanobject?[closed]将JSON字符串解析为对象的最简单的C#函数是什么?[关闭]【发布时间】:2011-02-2100:45:48【问题描述】:将JS... 查看详情

基于开源库jsoncpp的json字符串解析

...ation)是一种轻量级高效数据交换格式。相比于XML,其更加简洁,解析更加方便。在实习期间,我负责的程序模块,多次使用到json进行数据传输。由于之前只对json稍稍了解,而且不熟悉项目组使用的开源json解析库,故在编码过程... 查看详情

c#解析复杂的json文件

...采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅 查看详情

如何高效快速地解析大量行格式json文件

】如何高效快速地解析大量行格式json文件【英文标题】:Howtoparselargeamountsoflineformatjsonfilesefficientlyandquickly【发布时间】:2020-10-1001:10:07【问题描述】:情况:我有来自社交媒体网站的大量数据,包含5个月,以数分钟的行格式jso... 查看详情

retrofit原理解析最简洁的思路(代码片段)

...对okhttp进行了封装,让我们使用okhttp做网路请求更加简单。但是光学会使用只是让我们多了一个技能,学习其源码才能让我们更好的成长。本篇文章是在分析retrofit的源码流程,有大量的代码,读者最好把源码下... 查看详情

最简单的xml用法

在传递数据时,XML和JSON是最常用的数据格式,SQLServer从很早的版本就开始支持XML格式,而对于JSON格式,SQLServer从2016版本开始支持。大多数数据库系统并没有升级到SQLServer2016版本,因此在传递格式化的数据时,通常还是使用XML... 查看详情

集合操作最简单的高效并行处理

集合操作最简单的高效并行处理并行处理是现代开发中必不可少的部分,凡是资源可以相互独立的,都可以运用并行,这样可以充分利用多核CPU的性能,当然,我们也要注意,一定要无阻塞,写出让线程阻塞的代码是每个开发人... 查看详情

json解析

...采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。2,json 查看详情

anaconda下安装opencv和tensorflow(最简洁高效的方法)(代码片段)

安装Tensorflow1,打开AnacondaNavigator2,手动创建tensorflow环境,这个和你的python版本号一致哈(方法一第一步之后,输入python即可查看当前的版本)3,手动搜索并下载添加4,在Installed中看下是否安装成... 查看详情

优雅的查看json文件(代码片段)

...器.jq在json数据处理中很有用就像用awk处理文本一样。jq最简单的应用应该是解析json文件格式化输出数据吧。有些网站如:json.cn就是用来在线解析json以一个友好的格式返回给用户查看。解析网站对于简单的json数据使用较为良好... 查看详情

gson解析json

...采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。现在大部分APP都使用json给前端返... 查看详情

将 Json 转换为 Xml 的最简单方法

】将Json转换为Xml的最简单方法【英文标题】:SimplestmethodtoConvertJsontoXml【发布时间】:2011-10-0805:36:43【问题描述】:我在.net中有网络服务。当我从数据库中检索数据时,它会在AndroidMobile中返回JSON文件。如何将JSON文件转换为XML... 查看详情

使用jsoup抓取和解析网页数据

...,提取所需的数据或信息。Jsoup的优势主要有以下几点:简单易用:Jsoup提供了类似于jQuery的API,使得处理HTML文档变得非常简单和易于理解。兼容性好:Jsoup能够解析HTML、XML等各种类型的文档,并且支持标准的CSS选择器,使得选... 查看详情

在 C#9 和 c#10 中编写属性的最简单和最简洁的形式

】在C#9和c#10中编写属性的最简单和最简洁的形式【英文标题】:simplestandmostconciseformtowriteapropertyinC#9andc#10【发布时间】:2021-11-1015:23:06【问题描述】:考虑到C#9甚至C#10的特性,如下编写属性最简单、最简洁的形式是什么?是否... 查看详情