android - JsonWriter 写入 GSON 文件时出现嵌套错误

标签 android json file

我想通过这个函数写入文件,但总是返回异常NESTING PROBLEM。 我的错误在哪里? 异常出现在这行代码中:

writer.name("code").value(s);

请帮帮我

这是电话:


userA.Write(file_name, getActivity().getBaseContext(),Prodotto);

public static void Write(String fileName,Context context,String s) {

         JsonWriter writer;
         File myDir, file_1;
         String file;

         try {
            myDir = context.getFilesDir();
            file = myDir.getAbsolutePath().toString();
            file_1 = context.getFileStreamPath(fileName);
            if(!file_1.exists()) { 
                //not exist file, create it             
                file_1 = new File(myDir, fileName);
            }
            //writer = new JsonWriter(new FileWriter(file+ "/"+ fileName));
            writer = new JsonWriter(new FileWriter(file+ "/"+ fileName));

            writer.beginObject(); // {
            writer.name("items"); // "items"

            writer.beginArray(); // [
            //ciclo for per tutti gli oggetti presenti
            writer.name("code").value(s); // "code" : 29
            writer.name("type").value(s); // "type"
            writer.name("name").value(s); // "name"
            writer.name("size").value(s); // "size"

            writer.endArray(); // ]      
            writer.endObject(); // }
            writer.close();

            System.out.println("Write - Done");

         } catch (IOException e) {
        e.printStackTrace();
         }

       }

我的 JSON 结构是:

{ "items" : 
 [
   {
     "code" : "1234",
     "type" : "Pagnerine Cialda",
     "name" : "Pagnerine Cialda Sottozero/Estate",
      "size" : "ct"
   },
    {
      "code" : "1234",
     "type" : "Pagnerine Cartone",
     "name" : "Pagnerine Cartone 16B",
      "size" : "ct"
   },
    {
      "code" : "1234",
     "type" : "Zucchero",
     "name" : "Saccarosio",
      "size" : "kg"
   },
 ]
}

最佳答案

从你的代码中有可疑的部分:

      writer.beginArray(); // [
        //ciclo for per tutti gli oggetti presenti
        writer.name("code").value(s); // "code" : 29
        writer.name("type").value(s); // "type"
        writer.name("name").value(s); // "name"
        writer.name("size").value(s); // "size"

        writer.endArray(); // ]       

我想,你有兴趣开始像这样的对象数组:[{...}, {...}]

每个对象代表:

{"code": xxxxx, "type": xxx, "name": xxx, "size": xxxx}

取而代之的是 ["code": xxxxx, "type": xxx, "name": xxx, "size": xxxx]

您不能将 Key-Value 放入数组。

所以也许是这样的:

      writer.beginArray(); // [
       writer.beginObject(); // { // open new object           
        writer.name("code").value(s); // "code" : 29
        writer.name("type").value(s); // "type"
        writer.name("name").value(s); // "name"
        writer.name("size").value(s); // "size"
        writer.endObject(); // }
        writer.endArray(); // ]     

作为旁注

在Java中,方法从小写开始。

关于android - JsonWriter 写入 GSON 文件时出现嵌套错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592604/

相关文章:

Javascript如何解析JSON数组

javascript - 获取 JSON 子对象数组以及在数组中查找匹配项的 Angular 方式。

Python删除包含 "l"的单词

java - 如何在 android imageview 中显示 SVG 图像

android - 使用 getValue() 从 DataSnapshot 解析到 Firebase 中的 Java 类

android - 当我尝试重复我的操作时,应用程序性能不佳

java - SimpleCursorAdapter 抛出 NullPointerException

wcf - 在配置文件中应用 [WebInvoke(ResponseFormat = WebMessageFormat.Json)]

file - 尝试读取整个文件时出现 MalformedInputException

php - 文件创建时间