在vue项目中经常会遇到向后台提交数据的数据类型为json字符串。

这就涉及到json、json数组、json字符串。


首先,JSON 其实并不是JS独有的,在许多编程语言中都可以解析JSON。

JSON是一种结构化的数据格式。

从结构表面上看,JSON对象与JS对象的写法相似。但是要特别注意以下区别:

1.JSON对象括号末尾不能加分号。
2.JSON属性名必须加引号

下面是一个JSON对象

let answer_json={
        "answerDetail" :[{"answer":this.checkedValue[index],"vote":0}],
        "questionId":tt.id,
        "message":'',


      }

可以看出JSON属性可以包含复杂数据类型,包含字符串、数组 等等。


JSON数组。

顾名思义,JSON数组就是多个JSON对象组成的数组。如下所示就是一个3个JSON对象组成的JSON数组

[
    {
        "answerDetail" :[{"answer":this.checkedValue[index],"vote":0}],
        "questionId":tt.id,
        "message":'',


      },
    {
        "answerDetail" :[],
        "questionId":tt.id,
      },
    {
        "answerDetail" :[{"answer":this.checkedMxValue[dd.id],"vote":0}],
        "questionId":dd.id,
        "message":'',

      }




]

JSON字符串

通常JS不能直接读取JSON对象和JSON数组,而是要把它转化成JSON字符串。

引用JSON.stringify()方法转化,入参是JSON数据,得到的是JS字符串。例如:

let answer_json={
        "answerDetail" :[{"answer":this.checkedValue[index],"vote":0}],
        "questionId":tt.id,
        "message":'',


      }
      // this.message_list[index]=answer_json;
      console.log(answer_json);
      this.message_list[index]=answer_json;
      console.log('提交答案为'+JSON.stringify (this.message_list[index]));

这里打印出来的就是字符串。