[英]Delete a Json object from a json file in java
I have a structure for a contact book: 我有一个通讯录的结构:
Contact { "Name":{ "First name":"Erm","Last Name": "Smith" }, "Number":67485647 }. 联系人{“ Name”:{“ First name”:“ Erm”,“ Last Name”:“ Smith”},“ Number”:67485647}。
I save it as a Json object and than store it in a file with createContact(). 我将其保存为Json对象,然后使用createContact()将其存储在文件中。
public class Writer {
public static final String filename ="phonebook.txt";
public void createContact (String fname, String lname,long number) throws FileNotFoundException
{
JsonObjectBuilder contactBuilder = Json.createObjectBuilder();
JsonObjectBuilder nameBuilder = Json.createObjectBuilder();
JsonArrayBuilder contactArrayBuilder= Json.createArrayBuilder();
nameBuilder.add("FirstName",fname);
nameBuilder.add("LastName",lname);
contactBuilder.add("Name", nameBuilder);
contactBuilder.add("Type", typeof);
contactBuilder.add("number", number);
JsonObject contact = contactBuilder.build();
contactArrayBuilder.add(contact);
JsonArray contactArray=contactArrayBuilder.build();
//write to file
OutputStream os = new FileOutputStream(filename);
JsonWriter fileWriter = Json.createWriter(os);
fileWriter.writeArray(contactArray);
fileWriter.close();}
But I need a method that deletes an entire contact object stored in the file. 但是我需要一种删除存储在文件中的整个联系人对象的方法。 I get stuck at this. 我被困在这里。 Because I need to find the contact by its phone number and than delete it. 因为我需要通过联系人的电话号码查找联系人,然后将其删除。 What can I do? 我能做什么? I am using javax.json. 我正在使用javax.json。
public void deleteContact(long phonenumber) throws FileNotFoundException{
InputStream is = new FileInputStream(filename);
JsonReader fileReader = Json.createReader(is);
JsonObject contactObj = (JsonObject) Json.createParserFactory(fileReader.readObject());
}
With javax.json is not possible to delete a single object of a json, so the best solution is to iterate over it, and don't add the ones that doesn't match to the response (Done with a jsonArray instead of a JsonObject): 使用javax.json不可能删除json的单个对象,因此最好的解决方案是对其进行迭代,并且不要添加与响应不匹配的对象(使用jsonArray而不是JsonObject完成):
public void deleteContact(long phonenumber) throws FileNotFoundException{
InputStream is = new FileInputStream(filename);
JsonReader fileReader = Json.createReader(is);
JsonArray contactObj = (JsonArray) Json.createParserFactory(fileReader.readObject());
JsonArrayBuilder factory= Json.createArrayBuilder();
for (int i = 0; i < contactObj.size(); i++) {
if(contactObj.getJsonObject(i).getInt("Number")!=phoneNumber){
JsonObjectBuilder nameBuilder = Json.createObjectBuilder();
JsonArrayBuilder contactArrayBuilder= Json.createArrayBuilder();
nameBuilder.add("First Name",contactObj.getJsonObject(i).getJsonObject("Name").getString("First Name"));
nameBuilder.add("Last Name",contactObj.getJsonObject(i).getJsonObject("Name").getString("Last Name"));
contactBuilder.add("Name", nameBuilder);
contactBuilder.add("Type", typeof);
contactBuilder.add("number", contactObj.getJsonObject(i).getInt("Number"));
factory.add(contactBuilder)
}
}
JsonArray res=factory.build();
//write to file
OutputStream os = new FileOutputStream(filename);
JsonWriter fileWriter = Json.createWriter(os);
fileWriter.writeArray(contactArray);
fileWriter.close();}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.