在 Groovy 中从 txt 文件中读取 JSON 对象

Posted

技术标签:

【中文标题】在 Groovy 中从 txt 文件中读取 JSON 对象【英文标题】:Reading JSON object from txt file in Groovy 【发布时间】:2013-10-31 14:54:55 【问题描述】:

我正在尝试从 txt 文件中收集 JSON。但我下面的代码似乎一直给我“nullPointerException”。

File f = new File(tempDir+File.separator+'jsonObject.txt')
if (f)
    log.error " file exists $f"
    FileReader f2 = new FileReader(f);
    log.error " file data- $f2"
    if (f2 == null) 
        //do something
     else 
        JsonSlurper jsonParser = new JsonSlurper();
        game = jsonParser.parse(new FileReader(f));
    
 

找到解决方案 读取一个json txt文件:

File f = new File(tempDir+File.separator+'jsonObject.txt')
def slurper = new JsonSlurper()
def jsonText = f.getText()
json = slurper.parseText( jsonText )

将 json 写入文件:

File g = new File(tempDir+File.separator+'jsonObject.txt')
            g.createNewFile()
            def json = new JsonBuilder()
            json 
                "result" result
                       
            g.setText(json.toString())

【问题讨论】:

在哪里抛出空指针?您可能还想看看我在阅读文本文件时问过的这个问题***.com/questions/15389329/… “game = ...”行开头的空指针异常 问题已使用替代代码解决 对于任何关注此的人,您不需要按照这里的解决方案所说的那样做,您可以从阅读器中读取,并且可以通过new File( f ).text = new JsonBuilder( [ result: result ] ) 来完成写入比上面的7行 【参考方案1】:

请试试这个:

import groovy.json.JsonSlurper

def inputFile = new File("D:\\yourPath\\json.txt")
def InputJSON = new JsonSlurper().parseText(inputFile.text)
InputJSON.each println it 

【讨论】:

使用此解决方案,我不断收到 java.io.FileNotFoundException: 并意识到我需要将 new File 更改为 readFile,如下所述:***.com/a/52752719/4535181 和这里***.com/a/38679858/4535181 另外,我必须删除对inputFiletext 属性的调用【参考方案2】:

尝试:

File f = new File( tempDir, 'jsonObject.txt' )
if( f.exists() ) 
    def game = f.withReader  r ->
        new JsonSlurper().parse( r )
    
    println game

【讨论】:

我完全使用了你的代码,但它在 JsonSlurper 行显示“nullPointerException”错误... 您可以将实际的堆栈跟踪添加到问题中吗?【参考方案3】:

尝试简单优化的解决方案:

import groovy.json.JsonSlurper

try 
File inputFile = new File("your_file_path")
def slurper = new JsonSlurper()
def data = slurper.parse(inputFile)
 catch (Exception e) 
      e.printStackTrace()
    

【讨论】:

【参考方案4】:

parseFile 可以将文件作为输入:

import groovy.json.JsonSlurper

def inputFile = new File("/your/path/my.json")
def InputJSON = new JsonSlurper().parseFile(inputFile, 'UTF-8')
InputJSON.each println it 

【讨论】:

public Object parse(File file) 自 2.2.0 版起在 JsonSlurper 中可用 - 请参阅 groovy docs

以上是关于在 Groovy 中从 txt 文件中读取 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

在 Verilog 中从 txt 读取和写入数组

java中从txt文件读取数据以及写数据到txt文件

在bash中从一个文件中读取文件名称,并检查当前目录是否保护这些文件

13-Groovy-读取内容和写入文件

从文件中读取字符串并使用 Groovy 将它们放入数组中

在python中从.txt写入.md [重复]