欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON详解?

程序员文章站 2022-03-10 07:57:54
...

JSON有两种表示结构,对象和数组。
对象: 对象结构以”{“大括号开始,”}”大括号结束。中间部分由0个或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
{key1:value1,key2:value2,…}
数组: 数组结构以”[“开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。
[{key1:value1,key2:value2},{key3:value3,key4:value4}]

解析JSON:如果数据庞大,可以用第三方解析工具gson(google)、fastjson(阿里)。gson要灵活一些(推荐)。

例子gson:
原项目是从网上抓取最新的恶意软件的信息存入SQLiteDatabase数据库
Activity:>>

HttpUtils httpUtils = new HttpUtils();
        String url="http://192.168.84.2:8080/antivirus.json";
        httpUtils.send(HttpRequest.HttpMethod.GET, url, new RequestCallBack<String>() {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                String result=responseInfo.result;
                if (!"".equals(result)){
                    try {
                        //gson用法核心
                        Gson gson = new Gson();
                        Antivitus fromJson = gson.fromJson(result, Antivitus.class);
                        boolean antivirus = AntivirusDao.addAntivirus(fromJson.md5, fromJson.desc);

                        if (antivirus){
                            ToastUtil.showToast(SplashActivity.this,"病毒更新成功");
                        }else{
                            ToastUtil.showToast(SplashActivity.this,"病毒更新失败");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            @Override
            public void onFailure(com.lidroid.xutils.exception.HttpException e, String s) {
            }
            }

Antivitus:>>

public class Antivitus {
            public String md5;
            public String desc;
        }

AntivirusDao.addAntivirus()>>

public static boolean addAntivirus(String md5,String desc){
        SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
        ContentValues values=new ContentValues();
        values.put("md5",md5);
        values.put("desc",desc);
        values.put("type","6");
        values.put("name","Android.Troj.AdWooboo.a");
        long datable = sqLiteDatabase.insert("datable", null, values);
        if (datable==-1){
            return false;
        }else{
            return true;
        }
        }
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>