我想将文本文件转换为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格式。有人有主意吗?或可以为此指引我正确的方向?
谢谢
答案 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 对象。这将帮助您解决同样的问题。