通过JavaScript动态创建JSON对象(没有连接字符串)

oha*_*nho 119 javascript json

我有这个JSON数据:

{
    "employees": [
        {
            "firstName": "John",
            "lastName": "Doe"
        },
        {
            "firstName": "Anna",
            "lastName": "Smith"
        },
        {
            "firstName": "Peter",
            "lastName": "Jones"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

假设我不知道我有多少列和一行员工,如何在JavaScript中创建这个对象(没有连接字符串)?假设我在"onGeneratedRow"方法中获取每一行,并且我需要将每一列(firstName,lastName)推送到"{}"括号.

var viewData = { 
    employees : [] 
};

var rowNum = -1; 

function onGeneratedRow(columnsResult)
{
    rowNum = rowNum + 1;
    viewData.employees.push({});    
    columnsResult.forEach(function(column) {                  
    var columnName = column.metadata.colName;
    viewData.employees[rowNum][columnName] = column.value;  });
}
Run Code Online (Sandbox Code Playgroud)

Waq*_*gir 137

这就是你需要的!

function onGeneratedRow(columnsResult)
{
    var jsonData = {};
    columnsResult.forEach(function(column) 
    {
        var columnName = column.metadata.colName;
        jsonData[columnName] = column.value;
    });
    viewData.employees.push(jsonData);
 }
Run Code Online (Sandbox Code Playgroud)

  • 我从来没有说过JSON一代.更多的情况是你说"这就是你需要的!",但我想知道你怎么知道OP不需要计数,或者你只是假设?你的答案不会生成JSON btw. (5认同)
  • 我从来没有说过. (4认同)

Xot*_*750 90

也许这些信息对您有所帮助.

var sitePersonel = {};
var employees = []
sitePersonel.employees = employees;
console.log(sitePersonel);

var firstName = "John";
var lastName = "Smith";
var employee = {
  "firstName": firstName,
  "lastName": lastName
}
sitePersonel.employees.push(employee);
console.log(sitePersonel);

var manager = "Jane Doe";
sitePersonel.employees[0].manager = manager;
console.log(sitePersonel);

console.log(JSON.stringify(sitePersonel));
Run Code Online (Sandbox Code Playgroud)


小智 8

这个主题,特别是Xotic750的答案对我非常有帮助.我想生成一个json变量,使用ajax将其传递给php脚本.我的值存储在两个数组中,我希望它们采用json格式.这是一个通用的例子:

valArray1 = [121, 324, 42, 31];
valArray2 = [232, 131, 443];
myJson = {objArray1: {}, objArray2: {}};
for (var k = 1; k < valArray1.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray1[k];
    myJson.objArray1[objName] = objValue;
}
for (var k = 1; k < valArray2.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray2[k];
    myJson.objArray2[objName] = objValue;
}
console.log(JSON.stringify(myJson));
Run Code Online (Sandbox Code Playgroud)

控制台日志中的结果应该是这样的:

{
   "objArray1": {
        "obj1": 121,
        "obj2": 324,
        "obj3": 42,
        "obj4": 31
   },
   "objArray2": {
        "obj1": 232,
        "obj2": 131,
        "obj3": 443
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我是否可以强调正确分隔您在此处提交的代码的实用性?没有间距就更难阅读. (2认同)
  • 这无休止地帮助了我。正是我所需要的。 (2认同)