【问题标题】:How to convert from text to JSON using NodeJS?如何使用 NodeJS 将文本转换为 JSON?
【发布时间】:2018-12-31 03:39:44
【问题描述】:

我想将文本文件转换为 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 格式。有人有想法吗?或者可以为我指明正确的方向吗?

谢谢,

【问题讨论】:

  • 你有什么尝试吗?
  • 我没有发现任何有用的东西。我唯一尝试过的是一个简单的 JSON.stringify(obj) 但它对我想要的结果不够具体。
  • JSON.stringify 倾向于将文本格式(类似于 json 格式)转换为正确的 json 格式。
  • 您想要的输出不是有效的 javascript 或 JSON。那应该是数组还是对象?如果Datapoints 总是只有一个项目,为什么它是一个数组?
  • 我把它做成了一个数组,因为我认为在我的代码中使用它会更容易,以防我想引用一个特定的数据点。

标签: javascript arrays node.js json


【解决方案1】:

这是我的解决方案

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"
  }
]

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您好,这个问题专门要求 NodeJs 解决方案(不是 java 解决方案)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2022-10-01
    • 2019-02-16
    • 2015-12-20
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多