在javascript中使用给定的数据创建Json

Creating Json with the given data in javascript

本文关键字:数据 创建 Json javascript      更新时间:2023-09-26

我有这样的数据:

var a = [Joe,Peter,12345,programmer];
var companies = [xyz,abc,def];
var xyz = [programmer,HR,Tester];
var abc= [HR,Tester];
var def = [programmer,HR,Tester];

我想动态创建这样的 Json 数据

var json = {
    "FirsName" : "Joe"
    "LastName" : "Peter"
    "Phone"    : "12345"
    "XYZ"      : "Checked"   // if the company has programmer it should give checked 
    "abc"      : "unchecked" // if the company has programmer it should give unchecked 
    "def"      : "checked"
}

您不能创建引用变量名称*的名为 companies 的数组,因为它们对解释器没有任何意义。相反,创建公司的映射。

var data = [ 'Joe', 'Peter', '12345', 'programmer' ];
var companies = {
  'xyz' : [ 'programmer', 'HR','Tester' ],
  'abc' : [ 'HR', 'Tester' ],
  'def' : [ 'programmer', 'HR,Tester' ]
};
function create(empData) {
  var employee = {
    firstName : empData[0],
    lastName  : empData[1],
    phone     : empData[2]
  };
  
  var ocupation = empData[3];
  for (var company in companies) {
    employee[company] = companies[company].indexOf(ocupation) > -1 ? 'checked' : 'unchecked';
  }
  
  return employee;
}
document.getElementsByTagName('body')[0].innerHTML = JSON.stringify(create(data), undefined, '  ');
body {
    white-space: pre;
    font-family: monospace;
}

结果

{
  "firstName": "Joe",
  "lastName": "Peter",
  "phone": "12345",
  "xyz": "checked",
  "abc": "unchecked",
  "def": "checked"
}

笔记

* 如果该数组包含字符串,正如我假设这是您尝试执行的操作,那么这是不可能的;但是如果您通过它们的变量引用而不是字符串名称来引用它们,那么您需要首先定义变量。

无效

不能在没有作用域的情况下引用变量。

var companies = ["xyz", "abc", "def"];
var xyz = ["Programmer", "HR", "Tester"];
var abc = ["HR", "Tester"];
var def = ["Programmer", "HR", "Tester"];

无效

不能引用尚未定义的变量。

var companies = [xyz, abc, def];
var xyz = ["Programmer", "HR", "Tester"];
var abc = ["HR", "Tester"];
var def = ["Programmer", "HR", "Tester"];

有效

这将创建一个二维数组,但您不知道您指的是哪家公司,因为没有对象键关系。

var xyz = ["Programmer", "HR", "Tester"];
var abc = ["HR", "Tester"];
var def = ["Programmer", "HR", "Tester"];
var companies = [xyz, abc, def];
我不知道

你到底是什么意思,但我这样做的方式是这样的:

var myJson = new Object();
myJson.FirsName= "Joe";
myJson.LastName= "Peter";
myJson.Phone= "12345";
myJson.XYZ= true;
myJson.abc= false;
myJson.def= true;
var jsonString= JSON.stringify(obj);

希望对您有所帮助!

根据您提供的数据,我认为您要决定指定与公司数组值匹配的数组,那么它在 JSON 对象中的值应该是 true,否则为 false。

如果正确,以下内容可能会有所帮助:

var a = ["Joe", "Peter", "12345", "Programmer"];
    var companies = ["xyz", "abc", "def"];
    var xyz = ["Programmer", "HR", "Tester"];
    var abc = ["HR", "Tester"];
    var def = ["Programmer", "HR", "Tester"];
    
    var jsonObject = new Object();
    
    jsonObject.FirsName = a[0];
    jsonObject.LastName = a[1];
    jsonObject.Phone = a[2];
    jsonObject.XYZ = xyz.indexOf(a[3]) > -1 ? true : false;
    jsonObject.abc = abc.indexOf(a[3]) > -1 ? true : false;
    jsonObject.def = def.indexOf(a[3]) > -1 ? true : false;;
    
    var jsonString = JSON.stringify(jsonObject);
    document.write(jsonString);