zoukankan      html  css  js  c++  java
  • JSON入门

    一、简介

        1、描述
            1)JavaScript 对象表示法(JavaScript Object Notation)

            2)存储和交换文本信息的语法。类似 XML

            3)比 XML 更小、更快,更易解析

            4)独立于语言

        2、语法

            1)花括号保存对象,方括号保存数组,数据在名称/值对中,数据由逗号分隔

                例如:

                    {

             "employees": [

             { "firstName":"John" , "lastName":"Doe" },

             { "firstName":"Anna" , "lastName":"Smith" },

             { "firstName":"Peter" , "lastName":"Jones" }

             ]

             }

            2)JSON 值可以是

      • 数字(整数或浮点数)
      • 字符串(在双引号中)
      • 逻辑值(true 或 false)
      • 数组(在方括号中)
      • 对象(在花括号中)
      • null
        3、JSON对象
            1)JSON 对象在花括号中书写:
                对象可以包含多个名称/值对:
                { "firstName":"John" , "lastName":"Doe" }
            2)这一点也容易理解,与这条 JavaScript 语句等价:
                firstName = "John"
                lastName = "Doe"
        4、JSON 数组
             1)JSON 数组在方括号中书写:
                    数组可包含多个对象:
    [
    { "firstName":"John" , "lastName":"Doe" },
    { "firstName":"Anna" , "lastName":"Smith" },
    { "firstName":"Peter" , "lastName":"Jones" }
    ]
    二、JavaScript中解析JSON
        1、JSON字符串
             '内容’
        2、JSON字符串->JavaScript对象
             1)eval函数
                var obj = eval ("(" + txt + ")");
                注意:存在潜在的安全问题
             2)JSON解析器
                var obj = JSON.parse(txt)
    三、JAVA中
        1、JSONObject
            - JSONObject.fromObject(Object object)    JSONObject       //object可以是Map,Bean,JSON字符串("{'hello':'world','abc':'xyz'}")
            - getString(String key)   String       //获取对象的属性值,类似:get(String key)  Object,get(Object key)   Object
            - put(Object key,Object value)      //增加对象的属性
            - JSONObject.toBean(JSONObject,Class)    Object      //Map,可以直接强制类型转换
        2、JSONArray
            1)转JSONArray
                - JSONArray.fromObject(Object  object)   JSONArray      //object可以是List,数组,Map,JSON字符串("['name','world']")
                - add(Object value)
                - add(int index,Object value)
            2)转List,Map,数组
                直接强制类型转换

     -------------------------------------分割线---------------------------------------------------

    下面举几个具体的列子理解下上面写的内容

    1、JSONObject

    定义一个JavaBean

    public class Student {
        private String name;
        private int Grade;
        private List<String> teachers;
    
        public Student() {
        }
    
        public Student(String name, int grade, List<String> teachers) {
            super();
            this.name = name;
            Grade = grade;
            this.teachers = teachers;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getGrade() {
            return Grade;
        }
    
        public void setGrade(int grade) {
            Grade = grade;
        }
    
        public List<String> getTeachers() {
            return teachers;
        }
    
        public void setTeachers(List<String> teachers) {
            this.teachers = teachers;
        }
    
    }

    主方法:

    public class TestJson {
        public static void main(String[] args) {
            List<String> teacherList = new ArrayList<String>();
            teacherList.add("math");
            teacherList.add("english");
            Student stu = new Student("yaohuix", 2, teacherList);
            JSONObject jsonObject = JSONObject.fromObject(stu);
            // Bean转JSONObject或JSON字符串(只要toString())
            System.out.println(jsonObject);// 输出:{"grade":15,"name":"yaohuix","teachers":["math","english"]}
            // JSONObject或JSON字符串(只要toString())转Bean
            Student otherStu = (Student) JSONObject.toBean(jsonObject,
                    Student.class);
            System.out.println(otherStu.getName());// 输出:yaohuix
            System.out.println(otherStu.getGrade());// 输出:2
            System.out.println(otherStu.getTeachers());// 输出:[math, english]
        }
    }
  • 相关阅读:
    【hive】时间段为五分钟的统计
    【git】提交到github不显示贡献小绿点问题的解决
    【hive】关于用户留存率的计算
    【hive】求日期是星期几
    【hive】数据仓库层次设计
    【hive】count() count(if) count(distinct if) sum(if)的区别
    转载:几种 hive join 类型简介
    丑小鸭和白天鹅没有区别
    好好照顾自己,就像照顾你爱的人那样;
    灵光一闪(最近更新于2020/8/23)
  • 原文地址:https://www.cnblogs.com/activity/p/4875053.html
Copyright © 2011-2022 走看看