Java 在Android中解析嵌套的Json对象并存储在数据库中
我只是尝试获取存储在JSON文件中的值,并将其保存到sqlite数据库中: 这是我的JSON文件:Java 在Android中解析嵌套的Json对象并存储在数据库中,java,android,json,sqlite,Java,Android,Json,Sqlite,我只是尝试获取存储在JSON文件中的值,并将其保存到sqlite数据库中: 这是我的JSON文件: { "list": { "meta": { "count": 132, "start": 0, "type": "resource-list" }, "resources": [ { "resource": { "classname": "Quote", "f
{
"list": {
"meta": {
"count": 132,
"start": 0,
"type": "resource-list"
},
"resources": [
{
"resource": {
"classname": "Quote",
"fields": {
"date": "2017-03-16",
"price": 3.6720000000000002,
"type": "currency",
"symbol": "AED=X"
}
}
},
{
"resource": {
"classname": "Quote",
"fields": {
"date": "2017-03-16",
"price": 65.075000000000003,
"type": "currency",
"symbol": "AFN=X"
}
}
},
{
.............
}
............
我试过这样做,但遇到了例外:
JSONObject mainObj = null;
try {
mainObj = new JSONObject(JSON);
JSONObject getSth = mainObj.getJSONObject("list");
if(mainObj != null){
JSONArray list = getSth.getJSONArray("resources");
if(list != null){
for(int i = 0; i < list.length();i++){
JSONObject elem = list.getJSONObject(i);
if(elem != null){
JSONObject prods = elem.getJSONObject("fields");
Object level = prods.get("type");
Toast.makeText(getApplicationContext(),""+level.toString(),Toast.LENGTH_LONG).show();
}
}
}
}
}catch (Exception e){
Toast.makeText(getApplicationContext(),""+e.toString(),Toast.LENGTH_LONG).show();
}
JSONObject mainObj=null;
试一试{
mainObj=新的JSONObject(JSON);
JSONObject getSth=mainObj.getJSONObject(“列表”);
如果(mainObj!=null){
JSONArray list=getSth.getJSONArray(“资源”);
如果(列表!=null){
对于(int i=0;i
我遇到了一个异常:字段中没有值
请给出一些建议,将这些值存储在(行字段)名称、奖品、符号和类型的数据库表(matrotable)中,我可以尝试制作字符串数组,检索并存储sqlite的值,是否还有其他简单的选择。。。
谢谢您的
字段
对象在资源
对象中,请这样做
for(int i = 0; i < list.length();i++){
JSONObject elem = list.getJSONObject(i);
if(elem != null){
JSONObject prods = elem.getJSONObject("resource")
.getJSONObject("fields");
Object level = prods.get("type");
Toast.makeText(getApplicationContext(),""+level.toString(),Toast.LENGTH_LONG).show();
}
}
您的
字段
对象位于资源
对象内
for(int i = 0; i < list.length();i++){
JSONObject elem = list.getJSONObject(i);
if(elem != null){
JSONObject prods = elem.getJSONObject("resource")
.getJSONObject("fields");
Object level = prods.get("type");
Toast.makeText(getApplicationContext(),""+level.toString(),Toast.LENGTH_LONG).show();
}
}
您缺少
资源
JOSNObject解析
for(int i = 0; i < list.length();i++){
JSONObject elem = list.getJSONObject(i);
JSONObject resource = elem.getJSONObject("resource");
if(resource != null){
JSONObject prods = resource.getJSONObject("fields");
Object level = prods.get("type");
Toast.makeText(getApplicationContext(),""+level.toString(),Toast.LENGTH_LONG).show();
}
}
for(int i=0;i
您缺少资源
JOSNObject解析
for(int i = 0; i < list.length();i++){
JSONObject elem = list.getJSONObject(i);
JSONObject resource = elem.getJSONObject("resource");
if(resource != null){
JSONObject prods = resource.getJSONObject("fields");
Object level = prods.get("type");
Toast.makeText(getApplicationContext(),""+level.toString(),Toast.LENGTH_LONG).show();
}
}
for(int i=0;i
我建议您使用最简单、最简单的方法解析json响应,以避免此类问题:
1-使用此工具生成模型类:下载生成的类并将其添加到模型包中
2-将此依赖项添加到gradle文件:
compile 'com.google.code.gson:gson:2.4'
3-调用此方法分析您的响应:
Gson gson = new Gson();
ResponseModel responseModel = gson.fromJson(json, ResponseModel.class);
我建议您使用最简单的方式解析json响应,以避免此类问题: 1-使用此工具生成模型类:下载生成的类并将其添加到模型包中 2-将此依赖项添加到gradle文件:
compile 'com.google.code.gson:gson:2.4'
3-调用此方法分析您的响应:
Gson gson = new Gson();
ResponseModel responseModel = gson.fromJson(json, ResponseModel.class);
是的,thnx,我需要存储到sqlite,然后稍后再检索,我如何轻松地实现这一点,我的目标是将这些字段添加到字符串数组并重新设置它?任何其他建议。@学习者,那么您应该查看一下
GSON
,然后您将能够创建一个pojo列表,尝试yes thnx,我需要存储到sqlite,然后稍后检索,我如何轻松实现这一点,我的目标是通过将这些字段添加到字符串数组并重新设置它?任何其他建议。@学习者,那么您应该查看一下GSON
,然后您将能够创建一个pojo列表,尝试yes thnx,我需要存储到sqlite,然后稍后检索,我如何轻松实现这一点,我的目标是通过将这些字段添加到字符串数组并重新设置它?任何其他建议。看看这个:创建一个带有getter和setter的模型类…或者另一个使用GSON和Pojo的选项..是的thnx,我需要存储到sqlite,然后稍后检索,我如何轻松实现,我的目标是通过将这些字段添加到字符串数组并重新保存它?任何其他建议。看看这个:创建一个带有getter和setter的模型类…或者另一个将GSON与Pojo结合使用的选项。。