JSON(JavaScriptオブジェクト表示法)

3616 ワード

JSON
一、概念
JavaScript Object Notationは、JavaScriptオブジェクト表現法を意味し、情報を格納し交換するデータフォーマットであり、xmlより小さく、より速く、より解析しやすいです.
二、文法
1.基本ルール
  • データはキーパッドのペアにあり、データはキーパッドのペアから表示されます.
  • キー:キーは引用符を使ってもいいし、引用符を使わなくてもいいです.
  • 値:取得値は、次のようにすることができます.
  • 数字(整数、浮動小数点)は直接
  • と書きます.
  • 文字列(引用符)
  • 論理値(true or false)
  • 配列(大かっこ内)
  • オブジェクト(jsonオブジェクト、括弧内)
  • null
  • データはカンマ区切り
  • です.
  • かっこ保存オブジェクト
  • 四角括弧保存配列
  • 2.データの取得
  • jsonオブジェクト.キー名
  • jsonオブジェクト["キー":引用符があることに注意してください.
  • 配列オブジェクト[インデックス]
    for(key in person) {
        alert(key + " : " + person[key]);
    }
  • 三、JSONとjavaオブジェクトの変換
    JSON解析器:Jsonilib、Gson、fastjson、Jackson
    1.javaオブジェクトをJSONに変更する
  • Jacksonの関連jarパッケージを導入する
  • JacksonコアオブジェクトObject Mapperを作成します.
  • writeValue(パラメータ、obj):パラメータの取得値
  • File:Objオブジェクトをjson文字列に変換し、指定されたファイル
  • に保存する.
  • Writer:Objオブジェクトをjson文字列に変換し、指定された文字出力ストリーム
  • に充填する.
  • OutputStream:Objオブジェクトをjson文字列に変換し、指定されたバイト出力ストリーム
  • に充填する.
  • writeValue AsString(obj):javaオブジェクトをjson文字列
  • に変換する.
  • Object Mapperの関連方法を呼び出して変換する
    Person person = new Person("David", 18, " ");
    
    ObjectMapper mapper = new ObjectMapper();
    
    String json_person = mapper.writeValueAsString(person);
    mapper.writeValue(new File("d://a.txt"), person);
  • コメント:Javaオブジェクトにあるメンバー変数がDateタイプの場合、直接JSONに変換して得られた値がミリ秒の値であれば、注釈を用いてこの問題を解決できます.定義されたクラスのメンバー変数にこの2つの注釈を追加します.
  • @Jsonignore:JSONに移行する際にこのキーの値を考慮しないということを示す
  • @JsonFormat:JSONに変換する際に指定されたフォーマットに変えることができるという意味を表しています.
  • 複雑なjavaオブジェクト:
  • List:行列に変換:[]
  • Map:JSONオブジェクトに変換する:{}
  • 2.JSONはjavaオブジェクトに変わります.
  • JacksonコアオブジェクトObject Mapper
  • を作成します.
  • Object MapperオブジェクトがreadValueを呼び出す方法:readValue(json文字列データ、Class)
    String json = "{\"name\":\"david\",\"age\":18,\"gender\":\" \"}";//         、     
    ObjectMapper mapper = new ObjectMapper();
    
    Person person = mapper.readValue(json, Person.class);
  • 四、Demo:ユーザ名が存在するかどうかのチェック
    実現ロジック:
  • ユーザ名が入力されたテキストボックスがフォーカスを失うと、非同期要求
  • がサーバに送信される.
  • サーバ端は要求を受信し、データベースを照会し、結果を文字入力ストリーム
  • に塗りつぶす.
    クライアント:
    $("#username").blur(function () {
        var username = $(this).val();
        $.get("findUsernameServlet", {username:username}, function (data) {// data          
            var span = $("#span_username");
            
            if (data.userExist) {
                span.css("color", "red");
                span.html(data.msg);
            } else {
                span.css("color", "green");
                span.html(data.msg);
            }
        }, "json");//    json
    });
    サービス:
    response.setContentType("text/html;charset=utf-8");
    
    String username = request.getParameter("username");
    
    Map map = new HashMap();
    
    if ("cat".equals(username)) {
        //        ,          
        map.put("userExist", true);
        map.put("msg", "       ");
    } else {
        //        
        map.put("userExist", false);
        map.put("msg", "     ");
    }
    
    ObjectMapper mapper = new ObjectMapper();
    mapper.writeValue(response.getWriter(), map);
    注意:サーバー書き込みのデータをJSONとして処理する必要があります.
  • get/post要求にデータフォーマット「json」を指定する
  • 、サービス端末でコード、フォーマットresponse.setContentType("application/json;charset=utf-8");
  • を指定します.
    転載先:https://www.cnblogs.com/zhuobo/p/10854411.html