关于Nodejs中json数据的分割处理

关于Nodejs中json数据的分割处理

在javascript中有以下json对象:

{ 'entityName': '名称',
  'entityId': 'XZMLCS',
  'propertyName': [ '属性名称1', '属性名称2' ],
  'propertyValue': [ 'XX属性1', 'XX属性2' ],
  'comment': [ '备注1', '备注2' ],
  creator: '管理员' }

如何循环处理为两个json对象:

  • json对象一:
      { 'entityName': '名称',
      'entityId': 'XZMLCS',
      'propertyName': '属性名称1' ,
      'propertyValue': 'XX属性1',
      'comment': '备注1',
      creator: '管理员' }
  • json对象二
      { 'entityName': '名称',
      'entityId': 'XZMLCS',
      'propertyName': '属性名称2' ,
      'propertyValue': 'XX属性2',
      'comment': '备注2',
      creator: '管理员' }

的呢?

类似如果需要分割成多个,如何循环呢?


8 回复

关于Node.js中JSON数据的分割处理

在JavaScript中,你可能会遇到需要将一个包含数组的JSON对象拆分成多个独立的JSON对象的情况。假设你有以下的JSON对象:

{
  "entityName": "名称",
  "entityId": "XZMLCS",
  "propertyName": ["属性名称1", "属性名称2"],
  "propertyValue": ["XX属性1", "XX属性2"],
  "comment": ["备注1", "备注2"],
  "creator": "管理员"
}

你需要将其转换为多个独立的JSON对象,每个对象包含一对属性值。例如,期望的结果如下:

JSON对象一:

{
  "entityName": "名称",
  "entityId": "XZMLCS",
  "propertyName": "属性名称1",
  "propertyValue": "XX属性1",
  "comment": "备注1",
  "creator": "管理员"
}

JSON对象二:

{
  "entityName": "名称",
  "entityId": "XZMLCS",
  "propertyName": "属性名称2",
  "propertyValue": "XX属性2",
  "comment": "备注2",
  "creator": "管理员"
}

你可以通过遍历数组并创建新的对象来实现这一点。以下是具体的实现方法:

const originalJson = {
  entityName: '名称',
  entityId: 'XZMLCS',
  propertyName: ['属性名称1', '属性名称2'],
  propertyValue: ['XX属性1', 'XX属性2'],
  comment: ['备注1', '备注2'],
  creator: '管理员'
};

// 获取数组长度
const length = originalJson.propertyName.length;

// 创建一个新的数组来存储结果
const result = [];

for (let i = 0; i < length; i++) {
  // 创建一个新的对象
  const newJson = {
    entityName: originalJson.entityName,
    entityId: originalJson.entityId,
    propertyName: originalJson.propertyName[i],
    propertyValue: originalJson.propertyValue[i],
    comment: originalJson.comment[i],
    creator: originalJson.creator
  };

  // 将新对象添加到结果数组中
  result.push(newJson);
}

console.log(result);

这段代码首先定义了原始的JSON对象originalJson。然后,它计算propertyName数组的长度,并初始化一个空数组result来存储结果。

接下来,使用一个for循环遍历数组中的每个元素。在每次迭代中,创建一个新的对象newJson,并将原始对象中的非数组字段直接复制过来。对于数组字段(如propertyNamepropertyValuecomment),则从当前索引位置获取对应的值。

最后,将每个新对象添加到result数组中。最终,result数组将包含所有分割后的JSON对象。

这样,你就可以轻松地将一个复杂的JSON对象拆分为多个独立的对象,每个对象都包含了特定的属性值对。


通过 JSON.parse(JSON.stringify(o)) 复制多份, 然后每一份通过数字 i, 通过判断 Array.isArray 识别列表然后覆盖属性.

循环原来的JSON对象属性,创建新的JSON对象

没有巧方法,用循环做。

好的,收到! 谢谢!

想到这样一个办法

       var obj = { 'entityName': '名称',
           'entityId': 'XZMLCS',
           'propertyName': [ '属性名称1', '属性名称2' ],
           'propertyValue': [ 'XX属性1', 'XX属性2' ],
           'comment': [ '备注1', '备注2' ],
           creator: '管理员' }
    var result = [];
    obj.propertyName.forEach(function (v, k) {
        var temp = Object.create(obj);
        temp.propertyName = v;
        temp.propertyValue = v;

        result.push(temp);
    });
    
    console.log(result);

你这本身就是数据结构设计错误,你用c语言这样处理下树结构试试

为了将给定的 JSON 对象分割成多个 JSON 对象,可以使用 JavaScript 的 map 方法来遍历数组,并创建新的 JSON 对象。以下是具体的实现步骤和代码示例:

示例代码

const originalData = {
  entityName: '名称',
  entityId: 'XZMLCS',
  propertyName: ['属性名称1', '属性名称2'],
  propertyValue: ['XX属性1', 'XX属性2'],
  comment: ['备注1', '备注2'],
  creator: '管理员'
};

// 使用 map 方法创建新的 JSON 对象数组
const newDataArray = originalData.propertyName.map((name, index) => ({
  entityName: originalData.entityName,
  entityId: originalData.entityId,
  propertyName: name,
  propertyValue: originalData.propertyValue[index],
  comment: originalData.comment[index],
  creator: originalData.creator
}));

console.log(newDataArray);

解释

  1. 定义原始数据:首先定义一个包含多个数组属性(如 propertyName, propertyValue, comment)的 JSON 对象。

  2. 使用 map 方法map 方法遍历 propertyName 数组,并为每个元素创建一个新的 JSON 对象。在这个过程中,我们使用索引来获取 propertyValuecomment 数组中的相应值。

  3. 输出结果newDataArray 将包含多个 JSON 对象,每个对象代表原始数据的一个子集。

这样,你就可以轻松地将一个复杂的 JSON 对象分割成多个更简单的 JSON 对象。如果需要分割成更多的对象,只需确保所有数组的长度一致即可。

回到顶部