精华内容
下载资源
问答
  • Java读取json文件并对json数据进行读取、修改操作
    千次阅读
    2019-05-29 18:12:22

    1.介绍

    开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。

    2.说明

    Java语言操作json对象,需引入json数据操作库(org.json.jar)文件,可通过网络搜索寻找,另外本文附件代码中已包含,在Eclipse或其它编译工具中直接引入即可。

    pom 依赖:注意json-lib的属性有时需要加classifier属性,有时可以不用添加。

    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>                  //此处要加上jdk版本号
    </dependency>

    本文通过一个json文件(json.config)为例进行介绍,将key为confKey 的参数替换所其他值。json2.config为修改后的新文件。

    3.json样例

    [
      {  
        "business":"default",
        "confKey":"b",
        "features": [{  
            "type": "Feature",  
            "properties": {  
                "name": "Yuen Long",  
                "ID_0": 102,  
                "ID_1": 18,  
                "ISO": "HKG"  
            },  
            "geometry": {  
                "type": "Polygon",  
                "coordinates": [[[114.084511, 22.519991], [114.075668, 22.517466], [114.078194, 22.516203], [114.079460, 22.516623], [114.082825, 22.519150], [114.084511, 22.519991]]]  
            }  
        }]  
      },
      {  
        "business":"default",
        "confKey":"b",
        "features": [{  
            "type": "Feature",  
            "properties": {  
                "name": "Yuen Long",  
                "ID_0": 102,  
                "ID_1": 18,  
                "ISO": "HKG"  
            },  
            "geometry": {  
                "type": "Polygon",  
                "coordinates": [[[114.084511, 22.519991], [114.075668, 22.517466], [114.078194, 22.516203], [114.079460, 22.516623], [114.082825, 22.519150], [114.084511, 22.519991]]]  
            }  
        }]  
      }
        
    ]

    4、代码

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import java.io.*;
    
    public class JsonConvert {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
    
            // 读取原始json文件并进行操作和输出
            try {
                String s1 = readFileByLines("C:\\Users\\admin\\Desktop\\json.config");    // 读取配置文件
                String ws = null;
                BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\admin\\Desktop\\json2.config"));   // 输出配置文件
                JSONArray dataJson = JSONArray.fromObject(s1);
                for (int i = 0; i < dataJson.size(); i++) {
                    JSONObject properties = (JSONObject) dataJson.get(i);
                    properties.put("confKey","repalceParams");     //  需要替换的参数
                    ws = dataJson.toString();
                    System.out.println(ws);
                }
                bw.write(ws);
                bw.flush();
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static String readFileByLines(String fileName) {
            FileInputStream file = null;
            BufferedReader reader = null;
            InputStreamReader inputFileReader = null;
            String content = "";
            String tempString = null;
            try {
                file = new FileInputStream(fileName);
                inputFileReader = new InputStreamReader(file, "utf-8");
                reader = new BufferedReader(inputFileReader);
                // 一次读入一行,直到读入null为文件结束
                while ((tempString = reader.readLine()) != null) {
                    content += tempString;
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e1) {
                    }
                }
            }
            return content;
        }
    
    }

     

    更多相关内容
  • 【MySQL】对JSON数据进行查询

    千次阅读 2022-03-24 11:32:33
    '$.json属性' 进行查询条件 使用 json_extract 函数查询json_extract(字段, "$.json属性") 根据json数组查询,用 JSON_CONTAINS(字段, JSON_OBJECT('json属性', "内容")) MySQL5.7以上支持JSON的操作,以及增加了...

    MySQL根据JSON字段的内容检索查询数据

    • 使用 字段->'$.json属性' 进行查询条件
    • 使用 json_extract 函数查询,json_extract(字段, "$.json属性")
    • 根据json数组查询,用 JSON_CONTAINS(字段, JSON_OBJECT('json属性', "内容"))
      在这里插入图片描述
      MySQL5.7以上支持JSON的操作,以及增加了JSON存储类型
      一般数据库存储JSON类型的数据会用JSON类型或者TEXT类型

    注意:用JSON类型的话
    1)JSON列存储的必须是JSON格式数据,否则会报错。
    2)JSON数据类型是没有默认值的。

    示例

    1、首先我们看到数据表中,Form_Value_一列是josn格式存在的,又想通过其中的一组或者几组键值对来进行查询。
    在这里插入图片描述
    2、通过以下语句就可以通过key,value来进行查询了,如果多个条件,正常加 and 就可以了。

    SELECT * FROM core_process where Form_Value_ -> '$.attendancer' = '马立新'
    

    在这里插入图片描述
    3、如果是Mybatis框架,要把 > 符号转义,像这样用 <![CDATA[ ]]>

    <![CDATA[   Form_Value_ -> '$.endDate' < #{endDate,jdbcType=VARCHAR}    ]]>
    
    展开全文
  • Mysql对json数据进行查询及修改

    万次阅读 2020-06-02 16:46:14
    '$.json属性' 进行查询条件 使用 json_extract 函数查询json_extract(字段, "$.json属性") 根据json数组查询,用 JSON_CONTAINS(字段, JSON_OBJECT('json属性', "内容")) : [{}]查询这种形式的json数组 MySQL...
    • 使用 字段->'$.json属性' 进行查询条件
    • 使用 json_extract 函数查询,json_extract(字段, "$.json属性")
    • 根据json数组查询,用 JSON_CONTAINS(字段, JSON_OBJECT('json属性', "内容")) : [{}]查询这种形式的json数组
    • MySQL5.7以上支持JSON的操作,以及增加了JSON存储类型
      一般数据库存储JSON类型的数据会用JSON类型或者TEXT类型

    几个相关函数:

     

     

    示例:

    我这里没有创建json的字段格式,而是使用了text存储json 。

    注意:用JSON类型的话
    1)JSON列存储的必须是JSON格式数据,否则会报错。
    2)JSON数据类型是没有默认值的。

    插入json格式的数据到这一列中:

    {"age": "28", "pwd": "lisi", "name": "李四"}

    查询:

    一,
    select * from `offcn_off_main` where json_extract(json_field,"$.name") = '李四'
    二,
    select * from `offcn_off_main` where json_field->'$.name' = '李四'
    
    

    使用explain可以查看到无法使用索引。

    所以需要修改:

    mysql原生并不支持json列中的属性索引,但是我们可以通过mysql的虚拟列间接的为json中的某些属性创建索引,原理就是为json中的属性创建虚拟列,然后通过给虚拟列建立索引,从而间接的给属性创建了索引。

    在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column,前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上,而不是每次读取的时候计算所得。很明显,后者存放了可以通过已有数据计算而得的数据,需要更多的磁盘空间,与Virtual Column相比并没有优势----(其实我觉得还是有优势毕竟会少一些查询计算)

    因此,MySQL 5.7中,不指定Generated Column的类型,默认是Virtual Column。

    如果需要Stored Generated Golumn的话,可能在Virtual Generated Column上建立索引更加合适,一般情况下,都使用Virtual Generated Column,这也是MySQL默认的方式。

    格式如下:

    fieldname <type> [ GENERATED ALWAYS ] AS ( <expression> ) [ VIRTUAL|STORED ] [ UNIQUE [KEY] ] [ [PRIMARY] KEY ] [ NOT NULL ] [ COMMENT <text> ]

    所以我这里:

    ALTER TABLE 'off_main' `names_virtual` VARCHAR(20) GENERATED ALWAYS AS (`json_field` ->> '$.name') not null;

    Note: 利用操作符-» 来引用JSON字段中的KEY。在本例中字段names_virtual为虚拟字段,我把它定义成不可以为空。在实际的工作中,一定要集合具体的情况来定。因为JSON本身是一种弱结构的数据对象。也就是说的它的结构不是固定不变的。

    给虚拟字段增加索引:

    CREATE INDEX `names` ON `off_main`(`names_virtual`);  

    注意如果虚拟字段并不是创建表是添加的,而是后面加的,增加索引时如果有的行中虚拟字段为null,但是又设置了它不能为null,那么索引无法创建成功,提示column can not be null.

    增加索引后 explain看下即可看到用到了索引,并且虚拟字段的值会随着json字段的属性修改而自动变化。

     

    二,来看看修改:

    update off_main set json_field = json_set(json_field,'$.phone', '132') WHERE id = 45 
    //同时修改多个
    UPDATE offcn_off_main set json_field = json_set(json_field,'$.name',456,'$.age','bbb') WHERE id = 45 

    json_set() 方法存在的则会覆盖,不存在的会添加。

    三,删除

    UPDATE offcn_off_main set json_field = json_remove(json_field,'$.pwd','$.phone') WHERE id = 45 

    四,插入

    UPDATE offcn_off_main set json_field = json_insert(json_field,'$.pwd','111') WHERE id = 45 

    insert与update不同之处在于insert不存在的会增加,存在的不会覆盖

    展开全文
  • 开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。
  • 对JSON数据进行排序

    千次阅读 2018-11-26 17:19:30
    对JSON数据进行排序对JSON数据进行排序代码实现如下测试结果如下 对JSON数据进行排序 最近在项目中需要未存入到数据库中的数据进行排序,故使用Comparator进行排序。 代码实现如下 package com.test.sort; import...

    对JSON数据进行排序

    最近在项目中需要对未存入到数据库中的数据进行排序,故使用Comparator进行排序。

    代码实现如下

    package com.test.sort;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    
    public class JSONSort {
    
        public static void main(String[] args) {
            List<VNCSessionJson> vncList = new ArrayList<>();
            VNCSessionJson vnc1 = new VNCSessionJson();
            vnc1.setVncID("1");
            vnc1.setVncUserName("test1");
            vnc1.setCreateTime("2018-11-26 15:42:14");
            vncList.add(vnc1);
            VNCSessionJson vnc2 = new VNCSessionJson();
            vnc2.setVncID("2");
            vnc2.setVncUserName("test2");
            vnc2.setCreateTime("2018-11-26 15:42:16");
            vncList.add(vnc2);
    //        Collections.sort(vncList, new SortComparator1("vncID", "desc"));
            Collections.sort(vncList, getVncCompare("vncID", "asc"));
            for (VNCSessionJson json : vncList) {
                System.out.println(json.getVncID() + " " + json.getVncUserName() + " " + json.getCreateTime());
            }
        }
        
        private static Comparator<VNCSessionJson> getVncCompare(String sortItem, String sortDire) {
            Comparator<VNCSessionJson> comparator = new Comparator<VNCSessionJson>() {
                @Override
                public int compare(VNCSessionJson o1, VNCSessionJson o2) {
                    if ("vncID".equalsIgnoreCase(sortItem)) {
                        int id1 = Integer.parseInt(o1.getVncID());
                        int id2 = Integer.parseInt(o2.getVncID());
                        if ("asc".equalsIgnoreCase(sortDire)) {
                            return id1 - id2;
                        } else if ("desc".equalsIgnoreCase(sortDire)) {
                            return id2 - id1;
                        } else {
                            return 0;
                        }
                    } else if ("createTime".equalsIgnoreCase(sortItem)) {
                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        try {
                            Date date1 = format.parse(o1.getCreateTime());
                            Date date2 = format.parse(o2.getCreateTime());
                            long time1 = date1.getTime();
                            long time2 = date2.getTime();
                            if ("asc".equalsIgnoreCase(sortDire)) {
                                return (int) (time1 - time2);
                            } else if ("desc".equalsIgnoreCase(sortDire)) {
                                return (int) (time2 - time1);
                            } else {
                                return 0;
                            }
                        } catch (ParseException e) {
                            e.printStackTrace();
                            return 0;
                        }
                    } else if ("vncUserName".equalsIgnoreCase(sortItem)) {
                        if ("asc".equalsIgnoreCase(sortDire)) {
                            return o1.getVncUserName().compareTo(o2.getVncUserName());
                        } else if ("desc".equalsIgnoreCase(sortDire)) {
                            return o2.getVncUserName().compareTo(o1.getVncUserName());
                        } else {
                            return 0;
                        }
                    } else {
                        return 0;
                    }
                }
            };
            return comparator;
        }
    }
    
    class VNCSessionJson {
        private String vncID;
        private String vncUserName;
        private String createTime;
    
        public String getVncID() {
            return vncID;
        }
    
        public void setVncID(String vncID) {
            this.vncID = vncID;
        }
    
        public String getVncUserName() {
            return vncUserName;
        }
    
        public void setVncUserName(String vncUserName) {
            this.vncUserName = vncUserName;
        }
    
        public String getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }
    
    }
    
    class SortComparator1 implements Comparator<VNCSessionJson> {
    
        private String sortItem;
        private String sortDire;
    
        public SortComparator1(String sortItem, String sortDire) {
            this.sortItem = sortItem;
            this.sortDire = sortDire;
        }
    
        @Override
        public int compare(VNCSessionJson o1, VNCSessionJson o2) {
            if ("vncID".equalsIgnoreCase(this.sortItem)) { // int sort
                int id1 = Integer.parseInt(o1.getVncID());
                int id2 = Integer.parseInt(o2.getVncID());
                if ("asc".equalsIgnoreCase(this.sortDire)) {
                    return id1 - id2;
                } else if ("desc".equalsIgnoreCase(this.sortDire)) {
                    return id2 - id1;
                } else {
                    return 0;
                }
            } else if ("createTime".equalsIgnoreCase(this.sortItem)) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                try {
                    Date date1 = format.parse(o1.getCreateTime());
                    Date date2 = format.parse(o2.getCreateTime());
                    long time1 = date1.getTime();
                    long time2 = date2.getTime();
                    if ("asc".equalsIgnoreCase(this.sortDire)) {
                        return (int) (time1 - time2);
                    } else if ("desc".equalsIgnoreCase(this.sortDire)) {
                        return (int) (time2 - time1);
                    } else {
                        return 0;
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                    return 0;
                }
            } else if ("vncUserName".equalsIgnoreCase(this.sortItem)) {
                if ("asc".equalsIgnoreCase(this.sortDire)) {
                    return o1.getVncUserName().compareTo(o2.getVncUserName());
                } else if ("desc".equalsIgnoreCase(this.sortDire)) {
                    return o2.getVncUserName().compareTo(o1.getVncUserName());
                } else {
                    return 0;
                }
            } else { // nothing sort
                return 0;
            }
        }
    }
    

    测试结果如下

    升序
    在这里插入图片描述
    升序
    在这里插入图片描述

    展开全文
  • Python对json数据的提取

    千次阅读 2021-01-04 14:33:31
    JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有...1,为什么要研究json数据的提取呢? 是因为z
  • 对json数据进行排序和搜索

    千次阅读 2017-07-23 22:53:36
    对json数据进行排序和搜索在使用AJAX获取数据时后台返回的大部分都是json数据,在进行程序开发时有时会需要直接这些json数据在js程序中再进行一定的操作,如排序、搜索等,而不是通过AJAX请求由数据库进行这些操作...
  • Java Json解析,Java Web Json解析,Java Web服务端获取Json数据,客户端通过HTTP获取Json数据
  • java服务器对json数据进行gzip压缩

    万次阅读 2017-08-18 09:57:12
    因为有时候传输的json数据比较多,比较大的时候,我们需要对json数据进行压缩。下面贴出一个使用的例子 “`httpServletResponse.setHeader(“Content-Encoding”, “gzip”); httpServletResponse.setHeader(...
  • 通过Json数据格式进行Http服务交互(Delphi)

    千次下载 热门讨论 2014-10-29 11:16:39
    利用IdHTTP进行Http服务的数据交互,交互数据格式采用目前流行的Json,实现Get和Post方式的交互
  • mysql json数据格式的查询性能测试

    万次阅读 2019-09-10 20:40:34
    test_json表,存储10万行数据,每行数据json列值为10个元素的json数组 test_varchar_index表,存储100万条数据,不包含json列,并且不针对列建立索引 test_varchar_noindex 表,存储100万条数据,不包含json 列...
  • 对json数据key进行替换

    万次阅读 2018-10-26 11:06:51
    对json数据key进行替换
  • 文章目录前言返回前端的JSON数据进行格式化代码 前言 在WEB项目开发中,通常都是前后端分离,由后端提供接口前端进行访问,返回的数据一般是JSON格式,在配置项目时候会返回JSON进行格式化。 下面是我在多个...
  • json-handle谷歌浏览器json数据解析工具

    千次下载 热门讨论 2014-10-24 08:26:23
    json-handle谷歌浏览器json数据解析工具,装了此插件,在访问json数据时,自动解析成清晰的json格式.不用再为json而看得头晕眼花.此插件的使用:打开谷歌浏览器,到设置里面的拓展程序,然后勾选最上面的开发者模式,最后...
  • SQL查询JSON格式的数据

    万次阅读 2018-11-09 15:12:25
    //将表格json数据转成集合 JSONArray jsonarray1 = JSONArray.fromObject(queryObj.getTab1()); List<FormF05RespS01> tab1 = (List)JSONArray.toCollection(jsonarray1, FormF05RespS01.class);  
  • Servlet实现查询返回json数据

    万次阅读 2019-01-04 15:57:16
    使用Servlet响应浏览器的请求,实现Ajax查询等功能   package servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import...
  • 我们有一个日志表,里面的data字段是保存不同对象的json数据,遇到想根据里面的json的字段内容作为条件查询的情况 # mysql根据json字段的内容检索查询数据 mysql5.7以上支持json的操作,以及增加了json存储类型 ...
  • Mysql条件查询json数据

    千次阅读 2019-12-20 11:29:36
    Mysql8条件查询JSON 1、Mysql数据库对应数据 2、查询条件 #模糊查询JSON select * from test where json_value->'$.name' LIKE '%是%' #不等于空 SELECT * FROM test WHERE json_value->'$.name' !="" #不...
  • 用js里的sort()对json数据进行排序

    万次阅读 2017-03-11 19:29:28
    上示图片是W3School...既然可以Array进行排序,那对于我们从后台接收到json数据如何进行相同的排序呢?让我们来看这样一段json数据。{ "result":[ { "id":1, "value":2 },{ "id":2, "value":34 },{ "id
  • IDEA进行对json数据格式化

    万次阅读 2018-12-05 18:34:32
    原先也在网上查过格式化的快捷键,说是ctrl+shift+L,后来试了一下,发现与其他程序的快捷键会冲突。于是我就更改了快捷键。换成了ctrl+shift+s。 ...这里是搜快捷键名字即可: ...先建一个.json后缀的文件...
  • Mysql将查询结果集转换为JSON数据

    千次阅读 多人点赞 2021-02-23 14:51:03
    Mysql将查询结果集转换为JSON数据前言学生表学生成绩表查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)将单个学生各科成绩转换为数组JSON串将数组串作为value并设置key两张表联合查询(最终SQL,每个学生各科...
  • Axios 发送 json 数据

    千次阅读 2022-03-07 19:26:25
    Axios 发送 json 数据
  • 这个时候就有人提出在数据库中直接存入json数据,这样做不但可以大大在保证表和表之间联系的密切,而且更可以省去数据库中大量字段的产生,减少数据库的负载和 有人提出理论,就有人用代码实现!! 那么有几点问题...
  • VB利用官方api读写JSON数据格式文件简单实例,是一个非常、非常简单的例子…………
  • Django 查询数据库返回JSON格式数据

    千次阅读 2021-01-25 19:14:17
    和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 返回多条数据 示例 import json from django.http import HttpResponse from django.core import serializers def db_to_json(request): scripts ...
  • 后台返回json数据和前台解析json数据 一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。 总而言之,前后台直接交换的数据格式最常用的非json数据...
  • 前言 准备工具 解析思路 1.json格式的数据 2.jsonObject与jsonArray数据的区别 3. 解析数据 3.1 获取website 的值 3.2 获取 basic_version里的 user_gender...使用 jsonObject 和 jsonArray 层层嵌套的json数据进...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,364,700
精华内容 545,880
关键字:

怎么对json数据进行查询