如何使用NodeJS从文本转换为JSON?

时间:2018-12-31 03:39:45

标签: javascript arrays node.js json

我想将文本文件转换为JSON,但采用一种非常特殊的方式。我的文本文件如下所示:

Data 1:
datapoint1-1 = 21
datapoint1-2 = 23
Data 2:
datapoint2-1 = 21
datapoint2-2 = 23
datapoint2-3 = 23

我想创建一个JSON文件来分隔此数据,如下所示:

{
 {
 "Data": "1",
 "Datapoints": [
   {
    "datapoint1-1": "21",
    "datapoint1-2": "23"
   }
  ]
 },
 {
 "Data": "2",
 "Datapoints": [
  {
   "datapoint2-1": "21",
   "datapoint2-2": "23",
   "datapoint2-3": "23"
  }
 ]
 }
}

我的第一步已将数据拆分为一个数组内的2个数组。第一个数组是Data 1加上其数据点,第二个数组是Data 2加上其数据点。

现在,我坚持如何将这些数组转换为所需的JSON格式。有人有主意吗?或可以为此指引我正确的方向?

谢谢

2 个答案:

答案 0 :(得分:2)

这是我的解决方法

const input = `
  Data 1:
  datapoint1-1 = 21
  datapoint1-2 = 23
  Data 2:
  datapoint2-1 = 21
  datapoint2-2 = 23
  datapoint2-3 = 23
`

const array = input.split('\n').reverse()
const response = []
let template = {}
template['Datapoints'] = []
let switcher = false

array.map(arr => {
  // remove empty strings
  if (arr) {
    if (arr.includes('datapoint')) {
      const keyValue = arr.split(' = ')
      template.Datapoints.push({ [`${keyValue[0]}`]: keyValue[1] })
    } else {
      const keyValue = arr.split(' ')
      template.Datapoints.reverse()

      template[keyValue[0]] = keyValue[1].slice(0, -1)
      switcher = true
    }

    if (switcher) {
      response.push(template)
      template = {}
      template['Datapoints'] = []
      switcher = false
    }
  }
})

const finalResponse = response.reverse()

console.log(JSON.stringify(finalResponse, null, 2))

在控制台中,您会得到

[
  {
    "Datapoints": [
      {
        "datapoint1-1": "21"
      },
      {
        "datapoint1-2": "23"
      }
    ],
    "Data": "1"
  },
  {
    "Datapoints": [
      {
        "datapoint2-1": "21"
      },
      {
        "datapoint2-2": "23"
      },
      {
        "datapoint2-3": "23"
      }
    ],
    "Data": "2"
  }
]

答案 1 :(得分:0)

要转换 JSON 格式的文本文件,您可以在代码中使用 JACKSON OBJECT MAPPER jar。创建一个简单的 POJO。它将从文件中读取 JSON 字符串并将其映射到您的类。 然后您需要将 JSON 字符串值转换为 java 对象。这将帮助您解决同样的问题。