gson 如何从文件中解析JSON?

368yc8dk  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(272)

我有一个基本的问题,但我不能让这个工作的android应用程序。我有一个JSON文件,看起来像这样:

{  
  "catches":[  
    {  
      "time":"Jan 14, 2021 10:40:04 PM",
      "amount":1,
      "condition":0.8
    },
    {  
      "time":"Jan 15, 2021 12:05:14 PM",
      "amount":"2",
      "condition":1.0
    },
    {  
      "time":"Jan 16, 2021 11:30:04 PM",
      "amount":"3",
      "condition":null
    }
  ]
}

如何从存储在内部存储器中的文件解析JSON并将值赋给变量?在C#中,我可以这样做:

static void Main(string[] args)
        {
            string fPath = "C:/Temp/myJSON.json";
            using (StreamReader r = new StreamReader(fPath))
            {
                string json = r.ReadToEnd();
                Root el;
                el = JsonConvert.DeserializeObject<Root>(json);

                //variable which later would be used in for a TextView
                var lastRecord = el.catches[el.catches.Count - 1].time;
            } 
        }

但我不知道怎么用java做这个。谢谢。

wixjitnu

wixjitnu1#

您可以将文件内容提取为字符串:

fun getDataAsStringFromPath(path: String): String {
    val file = File(this.javaClass.classLoader?.getResource(path)?.path)

    return file.readText(Charset.defaultCharset())
  }

请确保将此文件保存在resources目录中与res所在的位置相同的位置。

t40tm48m

t40tm48m2#

我建议你看一下JSON解析库。我推荐的是Jackson。它很容易将String解析成你的对象。首先,你创建一个Data类。在你的例子中,你需要两个:CacheItem和Container(如果您愿意,可以适当地重命名)

class CacheItem {
    private String time;
    private Integer amount;
    private Double condition;

    // Getters and Setters
}

class Container {
    private List<CacheItem> caches;
    // Getter and Setter
}

现在,在您想要解析文件中的String的地方,获取对象Map器(请参见JacksonAPI),然后简单地调用Container container = mapper.readValue(string, Container.class);

相关问题