ホームページ  >  記事  >  Java  >  JavaフロントエンドとバックエンドのJSON送信方法は何ですか?

JavaフロントエンドとバックエンドのJSON送信方法は何ですか?

王林
王林転載
2023-05-15 12:31:061246ブラウズ

JSON データの概要

1. JSON データとは

JSON (JavaScript Object Notation) は軽量のデータ交換形式です: key:value ### フォーマット。

JSON は完全に言語に依存しないテキスト形式を使用するため、これらの機能により JSON は理想的なデータ交換言語となります。人間にとっては読み書きが簡単で、機械にとっては解析と生成が簡単です。

2. JSON 文字列

JSON 文字列は JSON 形式の文字列文字列、つまり JSON 文字列も文字列型ですが、この文字列はformat、つまりマップのような形式 [key:value]。

  • JSON 文字列のキーは文字列である必要があります (数値も格納できますが、格納および取り出しの際には値は String のままです)。

  • JSON 文字列の値は、数値 (整数または浮動小数点数)、文字列 (二重引用符内)、配列 (角括弧内)、オブジェクト (中括弧内) です。 、true/false/null。

3. バックエンド JSONObject オブジェクト

JSONObject は、JSON 形式のデータ構造 (key-値構造体 )、

map と同様に、put メソッドを使用して要素を JSONObject オブジェクトに追加できます。 JSONObject は文字列に簡単に変換でき、他のオブジェクトも JSONObject オブジェクトに簡単に変換できます。

(1) ネイティブを通じて JSONObject

	JSONObject zhangsan = new JSONObject();
        try {
            //添加
            zhangsan.put("name", "张三");
            zhangsan.put("age", 18.4);
            zhangsan.put("birthday", "1900-20-03");
            zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
            zhangsan.put("null", null);
            zhangsan.put("house", false);
            System.out.println(zhangsan.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }

を生成 (2) hashMap データ構造を通じて

   HashMap<String, Object> zhangsan = new HashMap<>();        
   zhangsan.put("name", "张三");
   zhangsan.put("age", 18.4);
   zhangsan.put("birthday", "1900-20-03");
   zhangsan.put("majar", new String[] {"哈哈","嘿嘿"});
   zhangsan.put("null", null);
   zhangsan.put("house", false);
   System.out.println(new JSONObject(zhangsan).toString());

を生成 (3) JavaBean を通じて

  Student student = new Student();
  student.setId(1);
  student.setAge("20");
  student.setName("张三");
  // 生成 JSONObject
  System.out.println(JSON.toJSON(student));

を生成 (4) ) JSON 文字列と JSON オブジェクトの変換

String studentString = "{\"id\":1,\"age\":2,\"name\":\"zhang\"}";
 
//JSON字符串转换成 JSONObject 
JSONObject jsonObject1 = JSONObject.parseObject(stuString); 
System.out.println(jsonObject1);

4、フロントエンド JSON 文字列と Javascript オブジェクトの比較

JavaフロントエンドとバックエンドのJSON送信方法は何ですか?

5、基本構造

JSON の 2 つの構造:

(1) 名前と値のペアのコレクション。さまざまな言語では、オブジェクト、レコード、構造体、辞書、ハッシュ テーブル、キー付きリスト、または連想配列として理解されます。

 { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

(2) 値の順序付きリスト。ほとんどの言語では、これは配列として理解されます。

{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"}, 
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}

5. JSON 形式のアプリケーション

(1) JSON データを変数に代入する

たとえば、新しい Javascript 変数を作成し、次に、JSON 形式のデータ文字列を直接割り当てます。

var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

] }

(2) データへのアクセス

上記の配列を Javascript 変数に代入すると、簡単にアクセスできます。実際、配列要素へのアクセスはドット表記を使用して簡単に行われます。したがって、プログラマ リストの最初のエントリの姓にアクセスするには、JavaScript で次の

コードを使用するだけです:

people.programmers[0].lastName;

(3) JSON データを変更します

#ピリオドや括弧を使用してデータにアクセスできるのと同じように、データも同様の方法で簡単に変更できます

people.musicians[1].lastName = "Rachmaninov";

(4) 文字列の変換

任意の JSONObject および Javascript オブジェクトを JSON Text に変換できます。逆変換も可能です。

1. バックエンドは Java オブジェクトと JSONObject を JSON 文字列形式に変換します

1. Jackson クラス

(1) Maven による依存関係の導入

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.9</version>
        </dependency>

(2) クラス ライブラリ関数の使用法

    @RequestMapping(value="/returnJson")
    //@ResponseBody注解将JSON数据写入响应流中返回到前端
    @ResponseBody
    public String returnJson(){
        ObjectMapper objectMapper=new ObjectMapper();
        Student student=new Student();
        //writeValueAsString()函数将对象转换为JSON字符串
        return objectMapper.writeValueAsString(student);
    }

2、FastJson クラス ライブラリ

(1) Maven による依存関係の導入

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.4</version>
    </dependency>

(2) ) クラス ライブラリ関数が逆シリアル化に

// 将 JSON 字符串反序列化成 JavaBean 
public static final Object parse(String text); 
// 将 JSON 字符串反序列化成 JSONObject    
public static final JSONObject parseObject(String text); 
// 将 JSON 字符串反序列化成 JavaBean 或 JSONObject 
public static final <T> T parseObject(String text, Class<T> clazz); 
// 将 JSON 字符串反序列化成JSONObject 的数组
public static final JSONArray parseArray(String text); 
// 将 JSON 字符串反序列化成 JavaBean 的数组
public static final <T> List<T> parseArray(String text, Class<T> clazz); 
// 将 Java 对象序列化为JSON 字符串 
public static final String toJSONString(Object object); 
// 将 Java 对象序列化为带格式的 JSON 字符串 
public static final String toJSONString(Object object, boolean prettyFormat); 
 //将 JavaBean 转换为 JSONObject 或者 JSONArray。
public static final Object toJSON(Object javaObject);

parse() と parseObject() を使用する場合の詳細の違いは次のとおりです: parse() はターゲット クラスの setter メソッドを識別して呼び出します; parseObject() は戻り値を返しますvalueをJSONObjectに変換し、JSON.toJSON(obj)を実行する、つまりJavaBeanをJSONObjectに変換するため、処理中にデシリアライズ対象クラスのgetterメソッドを呼び出してパラメータをJSONObjectに代入します。

3. @RestController アノテーションを使用する

@RestController は、@ResponseBody と @Controller を組み合わせたアノテーションです。

    1) @Controller はページへの応答に使用され、文字列型メソッドの場合、springmvc は対応するページ (ビュー) にジャンプします。
  • 2) @ResponseBody はデータへの応答に使用され、オブジェクト型または Map 型メソッドの場合、springmvc は結果オブジェクトを json 形式に変換してフロントエンドに出力します。 (コントローラーのメソッドから返されたオブジェクトを、適切なコンバーターを介して指定された形式に変換した後、応答オブジェクトのボディ領域に書き込まれます)
  • 3) @RestControllerアノテーションにより、 springmvc は次のようになります。返されたオブジェクトまたはマップは自動的に json に変換され、フロントエンドに返されます (基本的なデフォルトでは jsckson を使用してデータ形式変換を実装します)。
  •     @RequestMapping(value="/returnJson")
        @ResponseBody
        public Student returnJson(){
            Student student=new Student();
            student.setName("林俊杰");
            student.setBirth(new Date(1996-03-15));
            student.setPassword("123456");
            String[] lan= {"Java","Python"};
            student.setLanguage(lan);
            return student;
        }
  • 2. フロントエンド Javascript オブジェクトと JSON 文字列形式の変換

1. JSON ライブラリを使用します

( 1 ) Javascript オブジェクトと JSON 文字列の変換

var jsonVar = {key: value}
 //将JS对象转换为JSON字符串
var jsonString = JSON.stringify(jsonVar) 
//将JSON字符串转换为JSON对象
var jsonObject = JSON.parse(jsonString)

(2) Javascript 配列と JSON 文字列の変換

var jsonVar = [value1,..,value]
//将JS数组转换为JSON字符串
var jsonString = JSON.stringify(jsonVar)  
//将JSON字符串转换为数组对象
var jsonObject = JSON.parse(jsonString)

2、JavaScript にはメソッドが付属しています

Javascript に付属の eval() 関数を使用すると、json データを Javascript オブジェクトに変換できます。

var json = &#39;{"name":"James"}&#39;;
var obj = eval( &#39;(&#39; + json + &#39;)&#39; );  //注意需要在json字符外包裹一对小括号
alert( obj.name );

3、jQuery 的自带方法

jQuery 中可以使用 $.parseJSON(json) 来将 json 转换为 Javascript 对象。

var json = &#39;{"name":"James"}&#39;;
var obj = $.parseJSON(json);  
alert( obj.name );

4、使用 jquery.json 插件

该插件提供了 4 个函数,用于解析和反解析 json,具体如下:

  • (1)toJSON:将 Javascript 的 object、number、string 或 array 转换成 JSON 数据。

  • (2)evalJSON:把 JSON 格式数据转换成 Javascript 对象,速度很快,不过这点速度微不足道。

  • (3)secureEvalJSON:把 JSON 转换成 Javascript 对象,但是转换之前会检查被转换的数据是否是 JSON 格式的。

  • (4)quoteString:在字符串两端添加引号,并智能转义(跳过)任何引号,反斜杠,或控制字符。

  • (注意:需要和 jQuery 核心库结合使用)

var obj = {"plugin":"jquery-json","version":2.4};
//json = &#39;{"plugin":"jquery-json","version":2.4}&#39;
var json = $.toJSON( obj );
// 得到name值为:"jquery-json"
var name = $.evalJSON( json ).plugin;
// 得到version值为:2.4
var version = $.evalJSON( json ).version;

以上がJavaフロントエンドとバックエンドのJSON送信方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。