我遇到了一种情况,我希望通过PHP读取JSON格式的一些数据,但是我有一些问题需要理解如何构建Javascript对象以动态创建JSON格式。
我的方案如下:
<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">
我到目前为止的Javascript代码遍历每个输入抓取数据,但是我无法理解如何从这里开始处理。
var taskArray = {};
$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();
//how to create JSON?
});
如果可能,我想获得以下输出。
[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]
通过输入字段值获取电子邮件的地方。
非常感谢任何有关这种情况的灯光!
答案 0 :(得分:232)
像这样:
function createJSON() {
jsonObj = [];
$("input[class=email]").each(function() {
var id = $(this).attr("title");
var email = $(this).val();
item = {}
item ["title"] = id;
item ["email"] = email;
jsonObj.push(item);
});
console.log(jsonObj);
}
<强>解释强>
您正在寻找an array of objects
。因此,您创建一个空白数组。使用“title”和“email”作为键为每个input
创建一个对象。然后将每个对象添加到数组中。
如果您需要字符串,请执行
jsonString = JSON.stringify(jsonObj);
示例输出
[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}]
答案 1 :(得分:11)
我认为您不能仅使用jQuery将JavaScript对象转换为JSON字符串,假设您需要JSON字符串作为输出。
根据您定位的浏览器,您可以使用JSON.stringify
函数生成JSON字符串。
有关详细信息,请参阅http://www.json.org/js.html,在那里您还可以找到本机不支持JSON对象的旧浏览器的JSON解析器。
在你的情况下:
var array = [];
$("input[class=email]").each(function() {
array.push({
title: $(this).attr("title"),
email: $(this).val()
});
});
// then to get the JSON string
var jsonString = JSON.stringify(array);
答案 2 :(得分:8)
可能这会有所帮助,我更喜欢纯JS,它会大大提高性能,因为你不会有很多JQuery函数调用。
var obj = [];
var elems = $("input[class=email]");
for (i = 0; i < elems.length; i += 1) {
var id = this.getAttribute('title');
var email = this.value;
tmp = {
'title': id,
'email': email
};
obj.push(tmp);
}
答案 3 :(得分:0)
您也可以通过以下代码实现这一目标。
let str = '{" + yourKey + ":'+yourValue+'}';
str = JSON.parse(str);
答案 4 :(得分:0)
与上面的示例相同-如果您只是在寻找json(而不是对象数组),请使用
function getJsonDetails() {
item = {}
item ["token1"] = token1val;
item ["token2"] = token1val;
return item;
}
console.log(JSON.stringify(getJsonDetails()))
此输出将显示为(有效json)
{
"token1":"samplevalue1",
"token2":"samplevalue2"
}