我有一个联系簿结构:
联系{“姓名”:{“名字”:“Erm”,“姓氏”:“史密斯”},“号码”:67485647}。
我将其保存为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();}
但是我需要一个方法来删除存储在文件中的整个联系对象。我对此感到困惑。因为我需要通过电话号码找到联系人而不是删除它。我能做什么?我正在使用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());
}
答案 0 :(得分:0)
您的JSON可以是这样的:
{
"contacts":{
"989089787":{
"firstname":"Sentra",
"lastname":"Kendra"
},
"98908978765":{
"firstname":"Taurus",
"lastname":"Thampa"
}
}
}
对于移除密钥,您可以按照此link
进行操作答案 1 :(得分:0)
使用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();}
}
所有使用的文档都在here
中