Vue+Springboot开发框架下对于参数的深度理解(JSON,数组,对象)

JSON格式=》JavaScript Object Notation(对应前端,我觉得使用JSON格式就是啥都能存,然后直接传给后端,让后端去解析,这就很好体现了响应式开发模式,前端不直接对数据进行深度处理,而是通过后端进行处理)

{}=》对应为一个对象,通过键值对进行存储以及访问

    {
        "content": "1",
        "correct": false
    }发送一个包含id,name属性的对象

那么后端如果只接收这个对象

(@RequestBody Options(对象类型) options)即可

然后Options对象

@Data

public class Options(){

        private Integer content;

        private Boolean correct;

}

[]=》对应为一个数组,通过索引进行存储以及访问

[
    {
        "content": "1",
        "correct": false
    },
    {
        "content": "1",
        "correct": false
    },
    {
        "content": "1",
        "correct": false
    },
    {
        "content": "1",
        "correct": true
    }
]

附:一些前端传给后端参数的定义方式

QuestionDetail: {
  QuestionId: '',
  QuestionContent: '',
  QuestionType: '单选题',
  QuestionTheme:""
},
QuestionOption:{
  Content1:{content:'', correct:false},
  Content2:{content:'', correct:false},
  Content3:{content:'', correct:false},
  Content4:{content:'', correct:false}
},
QuestionAllInfo:{
  question:"",
  options:""
}

实际例子:

前端:

const questionData = {
  question:{
    questionId: 4,
    questionContent: "12",
    questionType: "单选题",
    questionTheme: "12"
  },
  options:[
    {
      questionOption: "1",
      questionCorrect: false
    },
    {
      questionOption: "11",
      questionCorrect: false
    },
    {
      questionOption: "1",
      questionCorrect: true
    },
    {
      questionOption: "1",
      questionCorrect: false
    }
  ]
}
this.$ExamApi.addQuestions(questionData).then(res=>{
  console.log(questionData)
})

后端:

@Data
public class Test {
    private Test1 question;
    private List options;
}
@Data
public class Test1{
    private Integer QuestionId;
    private String QuestionContent;
    private String QuestionType;
    private String QuestionTheme;
}
@Data
public class Test2 {
    private String QuestionOption;
    private boolean QuestionCorrect;
}
@PostMapping("/exam/addQuestions")
public void addQuestions(@RequestBody Test questionData) {
    System.out.println(questionData);
    // 在这里可以进行处理,比如存储题目信息到数据库
}

附:那为什么前端要转为JSON,而不直接传数组或者对象

在前端和后端之间传输数据时,常常使用JSON格式是因为JSON具有以下优点:

  1. 易于解析和序列化: JSON数据可以轻松地被解析成JavaScript对象,也可以被序列化成字符串进行传输。现代编程语言都提供了方便的JSON解析和序列化工具,使得数据的处理更加方便。

  2. 支持多种数据类型: JSON支持多种数据类型,包括字符串、数字、布尔值、数组和对象等,因此可以灵活地表示各种复杂的数据结构。

  3. 通用性: JSON是一种通用的数据交换格式,在各种不同的系统和平台上都得到了广泛支持。因此,使用JSON作为数据传输的格式可以提高系统的互操作性和扩展性。

  4. 文本格式: JSON是一种文本格式,易于阅读和理解,便于调试和排查问题。

虽然直接传输数组或对象也是可能的,但JSON作为一种通用的数据交换格式,更加灵活、通用且易于处理,因此在前端和后端之间传输数据时常常选择JSON格式。

那么JSON格式数据和对象和数组有什么差别,JSON格式数组又是什么意思

附:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它由键值对组成,键值对之间用逗号分隔,键和值之间用冒号分隔。JSON有两种主要的数据结构:对象和数组。

  1. 对象(Object): 对象是由键值对组成的无序集合,其中每个键都是唯一的,键和值之间用冒号分隔。对象的键是字符串,值可以是字符串、数字、布尔值、对象或数组等其他JSON数据类型。对象使用花括号 {} 表示,键值对之间用逗号分隔,例如:{"name": "John", "age": 30, "isStudent": true}

  2. 数组(Array): 数组是由值组成的有序集合,每个值可以是字符串、数字、布尔值、对象或数组等其他JSON数据类型。数组使用方括号 [] 表示,值之间用逗号分隔,例如:["apple", "banana", "orange"]

JSON格式数组指的是JSON数据结构中的数组部分,它表示一组有序的值的集合。每个值可以是任何合法的JSON数据类型,包括字符串、数字、布尔值、对象或其他数组。在JSON中,数组可以嵌套在对象中,也可以作为顶级结构出现。

总之,JSON格式数据可以是对象或数组,对象是无序的键值对集合,数组是有序的值集合。JSON格式数组指的是JSON数据结构中的数组部分,表示一组有序的值的集合。

你可能感兴趣的:(vue.js,spring,boot,json)