2012-06-29 202 views
6

如何建议将文本文件转换为JSON格式?将文本转换为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" 
} 
. 
. 
. 

想法?

+0

用什么语言?你有Linux工具吗? –

+0

任何语言,真的。 Unix工具和完整的操作终端为您服务。 –

+0

您是否知道您的结果文件不是json?最后至少需要'{'开头和'}'。 –

回答

2

对我来说最简单的就是在java中去做或去。

在Java:

  • 您可以使用new BufferedReader(new FileReader(file))
  • 你可以在阅读过程中填写的HashMap<String,String>一个HashMap读取行后一个文件符合readLine
  • 创建new BufferedWriter(new FileWriter(outputfilepath))
  • 使用gson,那么你只需要使用

这样的:

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

在围棋:

你并不需要导入外部包,围棋包括所需的。

这将是这样的(其他一些错误的测试将是一件好事):

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) 
} 
+0

谢谢!我会尝试,虽然不是马上 - 似乎我有点宣布“任何语言”会这样做 - 也许对于Linux Bash,JS或Ruby有类似的想法吗? –

+0

你想发现[Go](http://golang.org)吗? –

+0

:) 我想我是。 –

3

你可以使用Gelatin

你会用语法来定义你的输入文本(如果你以前从未做过,可能会有点困难)。然后,您只需通过Gelatin与您的语法文件一起运行您的文本文件,并指定输出。

编辑1:这将是有益的,如果你会张贴你想要转换的片段。

+0

这看起来很有前途。谢谢! –

0

使用Visual Studio

如果你在一个文本文件中所需要的数据,这将是最好的选择。

打开Visual Studio,然后在文件菜单 - >新建 - >文件 下安装,你应该有“网络”选项。其中列出的格式之一是JSON。

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