将文本转换为JSON

8

您好,以下是对于如何将文本文件转换为JSON格式的建议:

我有一个包含大约500个文本位的文本文件,其格式如下:

[number in brackets or astriek]
[line1]
[line2]
[line3]
[space]
.
.
.

我希望将其转换为JSON格式,如下所示:

"page1": {
   "line1": "LINE1",
   "line2": "LINE2",
   "line3": "LINE3"
},
"page2": {
   "line1": "LINE1",
   "line2": "LINE2",
   "line3": "LINE3"
}
.
.
.

想法?

用什么语言?您是否有可用的Linux工具? - Denys Séguret
任何语言都可以。Unix工具和完全操作的终端为您服务。 - Tomer Lichtash
你是否意识到你的结果文件不是json格式的?你需要在开头至少加上{,在结尾加上} - Denys Séguret
3个回答

3
你可以使用明胶
您需要使用语法来定义输入文本(如果您以前从未这样做过,可能会有点困难)。然后,您只需通过Gelatin运行文本文件,并使用语法文件指定输出即可。
编辑1:如果您能发布一小段您要转换的内容,那将非常有帮助。

这看起来很有前途。谢谢! - Tomer Lichtash

2
最简单的方法对我来说是用Java或Go完成。 在Java中:
  • 您可以使用new BufferedReader(new FileReader(file))逐行读取文件。
  • 您可以在读取过程中填充一个HashMap<String,String>HashMap
  • 创建一个new BufferedWriter(new FileWriter(outputfilepath))
  • 然后使用gson,就只需要这样:

这样就可以了:

Gson gson = new Gson();
gson.toJson(myList, myFileOutputStreamWriter);

在Go语言中:

你不需要导入外部包,Go语言已经包含了所需的包。

代码示例(可以添加其他错误测试):

package main

import (
    "bufio"
    "fmt"
    "io"
    "encoding/json"
    "log"
    "strings"
    "os"
)

func main() {
    myBigThing := make(map[string]map[string]string)
    f, _ := os.Open("/home/dys/dev/go/src/tests/test.go")
    r := bufio.NewReader(f)
    var currentPage map[string]string
    pageNum := 0
    for {
        line, err := r.ReadString('\n')
        if err != nil {
            if err != io.EOF {
                log.Println("Error in parsing :", err)
            }
            break
        }
        if currentPage==nil {
            currentPage = make(map[string]string)
            myBigThing[fmt.Sprintf("page%d",pageNum)] = currentPage
            pageNum++
        } else if line=="" {
            currentPage = nil
        } else {
            tokens := strings.Split(line, ":")
            if len(tokens)==2 {
                currentPage[tokens[0]] = tokens[1]
            }   
        }       
    }
    f, err := os.Create("/home/dys/test.json")
    if err != nil {
        log.Println("Error :", err)
        return
    }
    defer f.Close()
    bout, _ := json.Marshal(myBigThing)
    f.Write(bout)
}

谢谢!虽然不是马上,但我会尝试一下。看来我有点偏离轨道,宣布“任何语言”都可以- 也许对于Linux Bash,JS或Ruby有类似的想法? - Tomer Lichtash
我用Go语言编写了一个完整的程序...没有进行太多测试,而且在过去几个月里我也没有编写过Go代码,但它似乎可以正常工作... - Denys Séguret

-1

使用Visual Studio

如果您的所需数据在文本文件中,这将是最佳选择。

打开Visual Studio,在“文件”菜单下-->新建-->文件 在已安装的选项中,您应该有“Web”选项。其中一个列出的格式是JSON。

选择它并将您的文本文档复制粘贴到VS中。保存文件,它就是JSON格式了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接