javascript 字符串转对象-Java前后端JSON传输方法(前后端JSON格式转换)

2023-08-29 0 9,047 百度已收录

目录

JSON数据简介

1.什么是JSON数据

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式:键:值格式

JSON 使用完全独立于语言的文本格式,这使得 JSON 成为理想的数据交换语言。 它易于人类阅读和编写,也易于机器解析和生成。

2.JSON字符

JSON字符串是JSON格式的字符串,也就是说,JSON字符串也是字符串类型,但是这些字符串是有格式的,也就是类似于map[key:value]的格式。

3.后端JSONObject对象

JSONObject是一种数据结构javascript 字符串转对象,可以理解为JSON格式的数据结构(键值结构),类似于map,可以使用put方法向JSONObject对象添加元素。 JSONObject可以轻松转换为字符串javascript 字符串转对象,其他对象也可以轻松转换为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 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字符串与JSONObject转换

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

4.前端JSON字符串和Javascript对象的比较

5. 基本结构

JSON的两种结构:

(1)名称/值对的集合(Acollectionofname/valuepairs)。 在不同的语言中,它被理解为对象(object)、记录(record)、结构体(struct)、字典(dictionary)、哈希表(hashtable)、键控列表(keyedlist)或关联字段(关联数组)。

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

(2)有序值列表(Anorderedlistofvalues)。 在大多数语言中,它被理解为字段(数组)。

javascript 字符串转对象-Java前后端JSON传输方法(前后端JSON格式转换)

{ "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数据

正如可以通过点和括号访问数据一样,可以根据相同的形式轻松更改数据

javascript 字符串转对象-Java前后端JSON传输方法(前后端JSON格式转换)

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

(4) 转换字符串

可以将任何 JSONObject 和 Javascript 对象转换为 JSON 文本,反之亦然。

1.后端将Java对象和JSONObject转换为JSON字符串格式

1.杰克逊级

(1)Maven引入依赖

        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.9
        
        
            com.fasterxml.jackson.core
            jackson-core
            2.9.9
        
        
            com.fasterxml.jackson.core
            jackson-annotations
            2.9.9
        

(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引入依赖

    
      com.alibaba
      fastjson
      1.2.4
    

(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 parseObject(String text, Class clazz); 
// 将 JSON 字符串反序列化成JSONObject 的数组
public static final JSONArray parseArray(String text); 
// 将 JSON 字符串反序列化成 JavaBean 的数组
public static final  List parseArray(String text, Class 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() 需要执行 JSON.toJSON(obj ),即将 JavaBean 转换为 JSONObject,因此处理过程中会调用反序列化目标类的 getter 方法将参数参数传递给 JSONObject。

3.使用@RestController注解

@RestController是@ResponseBody和@Controller的组合注解。

    @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)  

javascript 字符串转对象-Java前后端JSON传输方法(前后端JSON格式转换)

(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 = '{"name":"James"}';
var obj = eval( '(' + json + ')' );  //注意需要在json字符外包裹一对小括号
alert( obj.name );

3.jQuery的内置方法

$.parseJSON(json) 可以在 Jquery 中使用,将 json 转换为 Javascript 对象。

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

4.使用jquery.json插件

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

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

总结

以上是个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 字符串转对象-Java前后端JSON传输方法(前后端JSON格式转换) https://www.wkzy.net/game/177912.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务