[JSON]는 JSON은 JSON과 XML, JSON 구문 및 Java JSON 변환 유사성과 차이점 개요

1. JSON은 무엇입니까?

JSON 가벼운 데이터 교환 포맷 인 (자바 스크립트 객체 표기법 JS는 표기법 개체). 이는 데이터를 저장 및 표현하는 텍스트 형식의 프로그래밍 언어 완전히 독립하여, ECMAScript를 (JS 설립 유럽 컴퓨터 학회 규범)의 서브 세트에 기초한다. 간단하고 명확한 계층 메이크업 JSON 이상적인 데이터 교환 언어입니다. 쉬운 구문 분석하고 생성하고, 효과적으로 네트워크 전송의 효율성을 개선하기 위해 시스템에 대해도 쉽게 읽기 및 쓰기 만합니다.

  • 참조 JSON 자바 스크립트 객체 표기법 (자바 스크립트 객체 표기법)
  • JSON은 경량 데이터 교환 형식의 텍스트입니다
  • JSON은 언어에 독립적이다.
  • JSON 자체 설명이 더 잘 이해

JSON 데이터 오브젝트를 설명하기 위해 자바 스크립트 구문을 사용하지만, JSON은 여전히 ​​언어와 플랫폼에 독립적이다. JSON 파서와 JSON 라이브러리는 다양한 프로그래밍 언어를 지원합니다. 현재 동적 많은 (PHP, JSP, .NET) 언어 JSON을 지원하는 프로그램.

2. XML 및 유사점과 차이점

  • XML 공통점
    1. JSON은 텍스트입니다
    2. JSON은 "자기 설명"(인간이 읽을 수)있다
    3. JSON은 (값의 존재 하에서)는 계층 구조를 갖는다
    4. JSON은 자바 스크립트에 의해 구문 분석 할 수
    5. JSON 데이터 AJAX를 이용하여 전송 될 수있다
  • XML과의 차이
    1. 끝 태그가 없습니다
    2. 짧은
    3. 빠른 읽기 및 쓰기
    4. 그것은) 구문 분석하는 방법을 자바 스크립트 평가를 (내장 될 수있다
    5. 배열을 사용하여
    6. 예약 된 단어를 사용하지 마십시오

3. 왜 JSON

응용 프로그램의 경우, AJAX, JSON 빠르고 쉽게 XML보다 사용하기 :

  • 사용 XML은
    XML 문서를 읽어
    문서를 통해 루프는 XML DOM을 사용하여
    값을 읽어 변수에 저장
  • 사용 JSON은
    JSON 문자열 읽기
    평가 () 처리 JSON 문자열을

4. JSON 구문

4.1 기본 규칙

  • 이름 / 값 쌍의 데이터 : JSON 데이터는 키 - 값 쌍으로 구성된다
    • 때문에, 따옴표를 사용할 수 없습니다 열쇠 마크 (모두 홀수와 짝수 라인)
    • 가치 값 종류 :
      1. 숫자 (정수 또는 부동 소수점)
      (큰 따옴표) 2. 캐릭터
      3. (true 또는 false로) 논리 값
      (대괄호) 4. 배열 { "사람": [{ } {}]}
      (중괄호) 5. 오브젝트 { "주소": { " 지방": " 섬서성"...}}
      6. 널 (null)
    • 데이터 쉼표로 구분 : 키 - 값 쌍 복수 쉼표로 구분
    • 저장 개체 중괄호 : {} 형식 정의 JSON을 사용하여
    • 어레이에 저장 대괄호 []
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json数据语法</title>
    <script>
        //1.定义基本格式
        var person = {"name":"张三",age:23,'gender':true}
        alert(person)
        //2.嵌套格式 {}->[]
        var persons = {
            "person":[
                {"name":"张三","age":23,"gender":true},
                {"name":"李四","age":24,"gender":true},
                {"name":"王五","age":25,"gender":false}
                ]
        };
        alert(persons);
        //嵌套格式 []->{}
        var ps = [
            {"name":"张三","age":23,"gender":true},
            {"name":"李四","age":24,"gender":true},
            {"name":"王五","age":25,"gender":false}
            ];
        alert(ps);
    </script>
</head>
<body>

</body>
</html>

4.2 데이터 수집

  1. JSON 객체입니다. 키
  2. JSON은 [ "키 이름"] 개체
  3. 객체 배열 [인덱스]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json数据语法</title>
    <script>
        //1.定义基本格式
        var person = {"name":"张三",age:23,'gender':true}
        alert(person)
        //获取name的值
        var name = person.name;
        var name = person["name"];
        alert(name);

        //2.嵌套格式 {}->[]
        var persons = {
            "person":[
                {"name":"张三","age":23,"gender":true},
                {"name":"李四","age":24,"gender":true},
                {"name":"王五","age":25,"gender":false}
                ]
        };
        alert(persons);
        var name = persons.person[2].name;
        alert(name);

        //嵌套格式 []->{}
        var ps = [
            {"name":"张三","age":23,"gender":true},
            {"name":"李四","age":24,"gender":true},
            {"name":"王五","age":25,"gender":false}
            ];
        //alert(ps);
        var name = ps[1].name;
        alert(name);
    </script>
</head>
<body>

</body>
</html>
  1. 순회
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json数据语法</title>
    <script>
        //1.定义基本格式
        var person = {"name":"张三",age:23,'gender':true}
        //嵌套格式 []->{}
        var ps = [
            {"name":"张三","age":23,"gender":true},
            {"name":"李四","age":24,"gender":true},
            {"name":"王五","age":25,"gender":false}
            ];
        //获取person对象中所有的键和值
        //for in 循环
        for(var key in person){
            //这样的方式获取不行,因为相当于person."name"
            // alert(key + ":" + person.key);
            alert(key + ":" + person[key]);
        }
        //获取ps中的所有值
        for (var i = 0; i < ps.length; i++) {
            var p=ps[i];
            for(var key in p){
                alert(key + ":" + p[key]);
            }
        }
    </script>
</head>
<body>

</body>
</html>

5. JSON 변환 데이터와 자바 객체

  • JSON 파서 :
    • 일반적인 파서 : Jsonlib, GSON, fastjson, 잭슨
  1. 잭슨 관련 소개 항아리 패키지
  2. 잭슨 코어 객체를 생성 ObjectMapper
  3. 변환을위한 관련 메소드 호출 ObjectMapper

JSON에 5.1 자바 객체

ObjectMapper 转换方法:
       writeValue(参数1,obj)
           参数1
               File:将obj对象转换为JSON字符串,并保存到指定的文件中
               Writer:将obj对象转换成JSON字符串,并将JSON数据填充到字符输出流中
               OutputStream:将obj对象转换成JSON字符串,并将JSON数据填充到字节输出流中
       writeValueAsString(obj):将对象转为json字符串
package cn.siyi.test;

import cn.siyi.domain.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class JacksonTest {
    //Java对象转为JSON字符串
    @Test
    public void test1() throws IOException {
        //1.创建Person对象
        Person p = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");

        //2.创建Jackson的核心对象 ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();
        //3.转换
//        String json = objectMapper.writeValueAsString(p);
//        System.out.println(json);
//        objectMapper.writeValue(new File("D://a.txt"),p);
        objectMapper.writeValue(new FileWriter("d://b.txt"),p);
    }

    @Test
    public void test2() throws Exception {
        //1.创建Person对象
        Person p = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");
        p.setBirthday(new Date());

        //2.转换
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(p);
        System.out.println(json);
    }

    @Test
    public void test03() throws Exception {
        //1.创建Person对象
        Person p = new Person();
        p.setName("李四");
        p.setAge(21);
        p.setGender("男");
        p.setBirthday(new Date());

        Person p1 = new Person();
        p1.setName("张三");
        p1.setAge(22);
        p1.setGender("男");
        p1.setBirthday(new Date());

        Person p2 = new Person();
        p2.setName("张三");
        p2.setAge(23);
        p2.setGender("男");
        p2.setBirthday(new Date());

        //创建List集合
        List<Person> ps = new ArrayList<Person>();
        ps.add(p);
        ps.add(p1);
        ps.add(p2);

        //转换
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(ps);
        System.out.println(json);
    }

    @Test
    public void test04() throws Exception {
        //1.创建Map对象
        Map<String, Object> map = new HashMap<>();
        map.put("name","张三");
        map.put("age",23);
        map.put("gender","男");

        //转换
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(map);
        System.out.println(json);
    }
}

5.2 JSON 객체 변환 자바

readValue(json字符串数据,Class)
package cn.siyi.test;

import cn.siyi.domain.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class JacksonTest {
    //json字符串转为Java对象
    @Test
    public void test05() throws Exception {
        //1.初始化JSON字符串
        String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";
        //2.创建ObjectMapper对象
        ObjectMapper objectMapper = new ObjectMapper();
        Person person = objectMapper.readValue(json, Person.class);
        System.out.println(person);
    }
}
게시 된 412 개 원래 기사 · 원 찬양 (135) ·은 40000 +를 볼

추천

출처blog.csdn.net/qq_41879343/article/details/104128318