我想制作一个像这样的JSON对象:
let lob = { courses_dept: 'sci', courses_avg: 77.09 };
将变量连接在一起:
var dept = "sci";
var avg = 77.09;
let a = '{"courses_dept": dept, "courses_averge": avg }';
但如果我这样做,我得到了SyntaxError:
let b = JSON.parse(a);
这样做的正确方法是什么?
答案 0 :(得分:1)
如果你想使用字符串:
var dept = "sci";
var avg = 77.09;
let a = `{"courses_dept": "${dept}", "courses_averge": ${avg} }`;
这假定dept
是一个字符串。如果您事先不知道这一点,请使用JSON.stringify
包装每个变量:
let b = `{"courses_dept": ${JSON.stringify(dept)}
,"courses_averge": ${JSON.stringify(avg)}}`;
请注意,该字符串使用反引号`而不是常规引号。这允许您执行string interpolation。如果你想直接连接,可以使用+。
您也可以只做常规对象:
let c = {"courses_dept": dept, "courses_averge": avg}
JSON.stringify(c)
答案 1 :(得分:0)
为什么不只是简单的 json 对象?
var dept = "sci";
var avg = 77.09;
let a = {
"courses_dept": dept,
"courses_averge": avg
};
console.log('a', a);
答案 2 :(得分:0)
这种方式有效并且似乎更简单。
let b = {};
b["courses_dept"] = dept;
b["courses_averge"] = avg;
答案 3 :(得分:0)
您可以使用单个qouates和串联变量制作一个json。之后,您可以解析字符串
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="row">
<div class="col-md-12">
Page One
</div><!--col 12-->
<div class="col-md-12">
Page Two
</div><!--col 12-->
</div><!--row-->
</div><!--col 4-->
<div class="col-md-4">
Page Three
</div><!--col 4-->
<div class="col-md-4">
<div class="row">
<div class="col-md-12">
Page Four
</div><!--col 12-->
<div class="col-md-12">
Page Five
</div><!--col 12-->
</div><!--row-->
</div><!--col 4-->
</div><!--row-->
</div><!--container-->
答案 4 :(得分:0)
注意 JSON 代表 JavaScript 对象符号。 JSON 总是 一个字符串。它是编码数据的字符串表示。没有“一个JSON对象”这样的东西。
不要试图通过将字符串和其他值连接在一起来编写 JSON。而是构建一个对象并将其传递给 JSON.stringify
-
const dept = "sci"
const avg = 77.09
// make an object
const myobject = { courses_dept: dept, courses_average: avg }
// use JSON.stringify to encode myobject to JSON
const myjson = JSON.stringify(myobject)
console.log("encoded", myjson)
// test JSON.parse to decode the JSON and get the object back
console.log("decoded", JSON.parse(myjson))
encoded {"courses_dept":"sci","courses_average":77.09}
decoded {
"courses_dept": "sci",
"courses_average": 77.09
}