Java 如何从文件解析JSON?
我有一个基本的问题,但我无法在android应用程序上实现这一点。 我有一个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
{
"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)代码>