【问题标题】:Json object value by concatenating two variables通过连接两个变量的 Json 对象值
【发布时间】:2019-08-23 19:13:27
【问题描述】:

我正在尝试创建一个包含键值对的 json,其中值是基于另外两个变量(字符串)的串联生成的。

除了连接like,

var a = "A";
var b = "B";
变量 c = a+" "+b;

并直接使用变量'c',有没有办法在键值中附加变量,如下所示。

var fName = "Test1";
var lName = "Test2";

var json = {"fname":fname,"lname":lName,"fullname":"'fName'+' '+'lname'"}

我希望得到 {"fname":"Test1","lname":"Test2","fullname":"Test1 Test2"}

请让我知道这是否可能实现。

【问题讨论】:

标签: json concatenation


【解决方案1】:
var fName = "Test1";
var lName = "Test2";

var json = {"fname":fName,"lname":lName,"fullname": fName + " " + lName}

编辑:在 cmets 之后,我将说明使用 JSON 字符串和对象的其他方法...

// json is a JavaScript Object
typeof json  // -> "object"

// If you want to create JSON string representing it, use JSON.stringify()
var jsonString = JSON.stringify(json)

typeof jsonString  // -> "string"

// If you like pain, you can also build that string manually
// with the right escape sequences... (Do not do that)
var sillyJsonString = "{\"fname\":" + "\""+fName + "\",\"lname\":" + "\"" + lName + "\",\"fullname\":" + "\""+fName + " " + lName + "\"}"

typeof sillyJsonString  // -> "string"

// And now let's make sure they have the same content
jsonString === sillyJsonString  // -> true

// And the final part, re-create the object for JSON string
var sameJsonObject = JSON.parse(sillyJsonString)

// Now let's compare that the objects have the same content (but the are not equal ;))
JSON.stringify(json) === JSON.stringify(sameJsonObject)  // -> true

希望这将为您指明正确的方向...

【讨论】:

  • 我在双引号内传递有效的 json,如下所示。 ``` "{"fname":fName,"lname":lName,"fullname": fName + " " + lName}" ``` 任何转义字符或任何使用它的方法
  • 你到底想做什么?你想解析一些 JSON 吗?创建一个 JSON 字符串?如果你解析它,你从哪里得到它?这些“三重单引号”是什么?
  • 添加了三引号以格式化注释中的代码。请忽略,谢谢您的澄清。我正在尝试即时更新 json。似乎是不可能的。所以我将创建一个具有合并值的新变量。感谢您对安东尼的支持。
  • 即时运行是什么意思?如果 json 是一个对象,而不是一个字符串(就像你原来的问题一样),你可以向它添加属性: json["newKey"] = "newValue"
  • 对造成的混乱表示歉意。在这种情况下,Json 是一个字符串。这很麻烦,我正在考虑一种不同的方法。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2016-01-31
  • 2018-08-08
  • 1970-01-01
相关资源
最近更新 更多