Java 如何从文件解析JSON?

Java 如何从文件解析JSON?,java,android,json,gson,Java,Android,Json,Gson,我有一个基本的问题,但我无法在android应用程序上实现这一点。 我有一个JSON文件,如下所示: { "catches":[ { "time":"Jan 14, 2021 10:40:04 PM", "amount":1, "condition":0.8 }, { "time":&q

我有一个基本的问题,但我无法在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
    }
  ]
}
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;
            } 
        }
如何从存储在内部存储器中的文件解析JSON并将值分配给变量? 在C#中,我可以这样做:

{  
  "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
    }
  ]
}
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;
            } 
        }
static void Main(字符串[]args)
{
字符串fPath=“C:/Temp/myJSON.json”;
使用(StreamReader r=新的StreamReader(fPath))
{
字符串json=r.ReadToEnd();
根el;
el=JsonConvert.DeserializeObject(json);
//变量,稍后将在中用于TextView
var lastRecord=el.catch[el.catch.Count-1]。时间;
} 
}

但我不知道如何用java制作这样的东西。谢谢。

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

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

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

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

我建议您查看JSON解析库。我推荐的是杰克逊。将字符串解析为对象非常容易。 首先,创建一个数据类。在您的示例中,您将需要两个:CacheItem和Container(如果您愿意,请适当重命名)

类缓存项{
私有字符串时间;
私人整数金额;
私人双重条件;
//接球手和接球手
}
类容器{
私人名单缓存;
//接二连三
}
现在,在您想要解析文件中的字符串的地方,获取对象映射器(请参见Jackson API),然后只需调用
Container Container=Mapper.readValue(String,Container.class)