フロントエンド研究ノート(6)フロントエンドデータの相互作用のためのJSON

JSONとは

jsonの完全な英語名はJavaScriptObject Notationで、これはJavaScriptオブジェクト表記法です。
一般的に、Javaの一般的なオブジェクト表現メソッドは次のとおりです。

Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
var p = {
    
    "name":"李四","age":23,"gender":"女"};

jsオブジェクトで表される場合

var p = {
    
    "name":"李四","age":23,"gender":"女"};

Jsonは、実際には一種のjsオブジェクト表現です。JSONは現在、データ転送用のテキスト情報の保存と交換に主に使用されています。JSONは、XMLよりも小さく、高速で、解析が簡単です。

JSONの使用方法

文法

一般的なルール

データは名前と値のペアになっています:jsonデータは、キーと値のペアで構成
され、引用符(シングルとダブルの両方)囲まれている、または引用符なしのキーです。
値のタイプ:

  1. 数値(整数または浮動小数点)
  2. 文字列(二重引用符で囲む)
  3. 論理値(trueまたはfalse)
  4. 配列(角括弧内){"persons":[{}、{}]}
  5. オブジェクト(中括弧内){"address":{"province": "Zhejiang" ...}}
  6. ヌルデータ
    はコンマで区切られます:複数のキーと値のペアはコンマで区切られます。中
    括弧はオブジェクトを保存します:{}を使用してjson形式を定義し、
    角括弧を使用して配列を保存します:[]
    jsonのいくつかの方法を定義します:
window.onload=function () {
    
    
    //基本格式
    var person = {
    
    "name":"zhangsan",age:23,"gender":true};
    alert(person);
    //嵌套格式 {}---->[]
    var persons= {
    
    
        "persons":[
            {
    
    "name":"zhangsan",age:23,"gender":true},
            {
    
    "name":"lisi",age:23,"gender":true},
            {
    
    "name":"wangwu",age:23,"gender":false}
        ]
    };
    alert(persons)
    //嵌套格式 []----->{}
    var ps=[
        {
    
    "name":"zhangsan",age:23,"gender":true},
        {
    
    "name":"lisi",age:23,"gender":true},
        {
    
    "name":"wangwu",age:23,"gender":false}
        ];
    alert(ps);
}

データを取得するためのJSON

単一のjsonオブジェクトのプロパティを取得します

var person = {
    
    "name":"zhangsan",age:23,"gender":true};
let ps1=person.name;
var ps2 = person["name"];
alert(ps2);
alert(ps1);

json配列のオブジェクトのプロパティを取得する
方法1:

var persons= {
    
    
        "persons":[
            {
    
    "name":"zhangsan",age:23,"gender":true},
            {
    
    "name":"lisi",age:23,"gender":true},
            {
    
    "name":"wangwu",age:23,"gender":false}
        ]
    };
    var name = persons.persons[2].name;
    alert(name);

方法2:

var ps=[
        {
    
    "name":"wangwu",age:23,"gender":true},
        {
    
    "name":"lisi",age:23,"gender":true},
        {
    
    "name":"wangwu",age:23,"gender":false}
        ];
var ps1= ps[1].name;
alert(ps1);

JSONトラバーサルデータ

オブジェクトをトラバースします。

var person = {
    
    "name":"zhangsan",age:23,"gender":true};
    for(let key in person){
    
    
        //这种获取方式有问题,相当于person.“key”
        alert(key+":"+person[key]);
    }

オブジェクトの配列を反復処理します

    //嵌套格式 {}----->[]
    var persons= {
    
    
        "persons":[
            {
    
    "name":"zhangsan",age:23,"gender":true},
            {
    
    "name":"lisi",age:23,"gender":true},
            {
    
    "name":"wangwu",age:23,"gender":false}
        ]
    };
    var ps1 = persons.persons;
    //alert(ps1);
    for (let i = 0; i < ps1.length; i++) {
    
    
        for(let key in ps1[i]){
    
    
            //这种获取方式有问题,相当于person.“key”
            alert(key+":"+ps1[i][key]);
        }
    }
    //嵌套格式 []----->{}
    var ps=[
        {
    
    "name":"zhangsan",age:23,"gender":true},
        {
    
    "name":"lisi",age:23,"gender":true},
        {
    
    "name":"wangwu",age:23,"gender":false}
        ];
    for (let i = 0; i < ps.length; i++) {
    
    
        let p = ps[i];
        for(key in p){
    
    
            alert(key+"-->"+p[key]);
        }
    }

JSONオブジェクトとJAVAオブジェクト間の変換

JSONパーサー

一般的なJSONパーサー
JsonLib:JSONは、
Gson:Google社によって正式に提供されています
fastJson:Alibaba
jackson:springは組み込みのJsonパーサーです。jackson
は組み込みのjson変換ツールであるため、以下ではジャクソン関連のメソッドに焦点を当てます。

JSON—> java

  1. ジャクソン関連のjarパッケージをインポートする
  2. JacksonコアオブジェクトObjectMapperを作成します
  3. ObjectMapperの関連するメソッドを呼び出して、
    readValue(json string data、Class)を変換します。

java—> JSON

使用手順:

  1. ジャクソン関連のjarパッケージをインポートする
  2. JacksonコアオブジェクトObjectMapperを作成します
  3. ObjectMapperの関連するメソッドを呼び出して変換します

```java
@Test
    public void test05() throws Exception {
    
    
        //1.初始化JSON字符串
        String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";
        //2.创建ObjectMapper对象
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为Java对象 Person对象
        Person person = mapper.readValue(json, Person.class);
        System.out.println(person);
    }

パラメータ1:
ファイル:objオブジェクトをJSON文字列に
変換し、指定されたファイルに保存しますライター:objオブジェクトをJSON文字列に変換し、jsonデータを文字出力ストリームに入力します
。OutputStream:objオブジェクトをJSONに変換します文字列、およびjsonデータをバイト出力ストリームに入力します
writeValue(parameter 1、obj):
writeValueAsString(obj):オブジェクトをjson文字列に変換します

2. 注解:

```java
1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
 @JsonFormat(pattern = "yyyy-MM-dd")
  1. 複雑なJavaオブジェクト変換
    1)リスト:配列
    2)マップ:オブジェクト形式は一貫しています

ユーザー名を確認する

サーバーによって応答されたデータは、クライアントで使用するときにjsonデータ形式として使用する必要があります。2つの解決策があります:

  1. $ .get(type):最後のパラメータータイプを「json」として指定します
  2. サーバー側でMIMEタイプを設定します
response.setContentType("application/json;charset=utf-8");

フロントエンドコード。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
    <script src="js/jquery-1.8.3.min.js"></script>
    <script>
        $(function () {
    
    
            $("#username").blur(function () {
    
    
                var username = $(this).val();
                $.get("findUserServlet",{
    
    username:username},function (data) {
    
    
                    let span = $("#s_username");
                    if(data.userExsit){
    
    
                        span.css("color","red");
                        span.html(data.msg);
                    }else {
    
    
                        span.css("color","green");
                        span.html(data.msg);
                    }
                },"json");

            });
        })
    </script>
</head>
<body>
<form>
    <input type="text" id="username" name="username" placeholder="请输入用户名">
    <span id="s_username"></span>
    <br>
    <input type="password" name="password" placeholder="请输入密码"><br>
    <input type="submit" value="注册"><br>
</form>
</body>
</html>

バックエンドコード;

@WebServlet("/findUserServlet")
public class FindUserServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

        String username = request.getParameter("username");
        response.setContentType("text/html;charset=utf-8");
        //response.setContentType("application/json;charset=utf-8");
        Map<String, Object> map = new HashMap<>();
        if("tom".equals(username)){
    
    
            map.put("userExsit",true);
            map.put("msg","此用户太受欢迎更换一个吧......");
        }else{
    
    
            map.put("userExsit",false);
            map.put("msg","用户名可用");
        }
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(response.getWriter(),map);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request, response);
    }
}

演算結果:
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/xueshanfeitian/article/details/110876743