2012-06-29 252 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格式。