我想通过此函数写入文件,但始终返回异常 NESTING PROBLEM 。 我的错误在哪里? 异常出现在此行代码中:
writer.name("代码&#34)。值(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"
},
]
}
答案 0 :(得分:3)
从您的代码中可疑部分:
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(); // ]
我想,你有趣的是启动对象数组,如:[{...}, {...}]
。
并且每个Object代表:
{"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中,方法稍后从小写开始。
答案 1 :(得分:1)
您可以尝试此代码。 这正是构建JSON内容所需要的:
writer.beginObject().name("itemes").beginArray();
writer.beginObject().name("code").value(1234);
writer.name("type").value("Pagnerine Cialda").endObject();
writer.beginObject().name("code").value(1234);
writer.name("type").value("Pagnerine Cartone").endObject();
writer.endArray().endObject().flush();
writer.close();