Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中解析嵌套的Json对象并存储在数据库中_Java_Android_Json_Sqlite - Fatal编程技术网

Java 在Android中解析嵌套的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

我只是尝试获取存储在JSON文件中的值,并将其保存到sqlite数据库中:

这是我的JSON文件:

{
  "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结合使用的选项。。