从JSON加载内容值

时间:2012-07-20 16:09:10

标签: android json

我正在尝试将内容值加载到数据库中。这里的代码有效:

private void processTable(final JsonReader tableReader, final ModelLoader loader) throws IOException
    {
        tableReader.beginArray();
        while (tableReader.hasNext()) {
            String id = loader.getIdColumnName();
            final ContentValues cv = loader.parseModel(tableReader);

            persistData(loader.getTableName(),id, cv);
        }
        tableReader.endArray();
    }

但是,当我在其中添加一个额外的部分时,它会失败。

private void processTable(final JsonReader tableReader, final ModelLoader loader) throws IOException
    {
        tableReader.beginArray();
        while (tableReader.hasNext()) {
            String id = loader.getIdColumnName();
            final ContentValues cv = loader.parseModel(tableReader);

            if (loader.getModelType() == Filter.LOADER.getModelType())                  //Checks to see if the filter sub arrays are there
            {
                while(tableReader.hasNext()) 
                {
                    String name = "";
                    try{
                        tableReader.
                        name = tableReader.nextName();
                    } catch (Exception e) {
                    tableReader.skipValue();
                    continue;
                    }
                    if (name.equals("ImageOverlays"))
                        processTable(tableReader, mLoader.getSpecificLoader("ImageOverlays"));
                    else if (name.equals("ColorOverlays"))
                        processTable(tableReader, mLoader.getSpecificLoader("ColorOverlays"));
                }
            }

            persistData(loader.getTableName(),id, cv);
        }
        tableReader.endArray();
    }

附加代码的目的是从过滤器中获取特定项目,然后处理它们。当我使用这段代码时,我甚至没有得到过去以前过滤器的任何值。

我认为我跳过这些值会以某种方式搞砸我之前声明的ContentValues cv。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

所以它的内部循环导致跳过必须解析的JSON对象的问题......

是的,您在评论中提到的内容值在您到达循环结束时无效。