在我的 java spring 项目中,我有带有对象的 json 数组字符串。我想从字符串中获取数据,然后保存到数据库。
所以,我有: pojo类
public class Contact {
private String id;
private String name;
private String mobile;
//getters and settrs & constructors
}
我想获取如下代码所示的数据:
String stringdata=["{"id":"1","mobile":"1860108","name":"Intex"}",
"{"id":"21","mobile":"777717717","name":"pari"}",
"{"id":"26","mobile":"172676236","name":"pari2"}"];
try {
Contact contact1 = new Contact();
try {
contact1 = new Gson().fromJson(contactreceive, Contact.class);
}
catch (UnsupportedEncodingException uee) {
return new ResponseEntity<Object>("failed", HttpStatus.EXPECTATION_FAILED);
}
Contact contact = new Contact(contact1.getId(),contact1.getName(),contact1.getMobile());
userDao.saveContact(contact);
return new ResponseEntity<Object>("created", HttpStatus.CREATED);
} catch (Exception e) {
logger.error("Mobile User Signup > Error: " + e.getMessage());
return new ResponseEntity<Object>(HttpStatus.NO_CONTENT);
}
}
但是我收到错误:
移动用户注册 > 错误:java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在第 1 行第 2 列为 BEGIN_ARRAY
如果不删除数组,我如何获取该联系人?
最佳答案
您的 JSON 字符串以 []
开头和结尾,因此 GSON
或 Jackson
或任何其他解析器将解析数组。因此,为了解决这个问题,你必须这样做
List<Contact> contact1 = new ArrayList<>();
contact1 = new Gson().fromJson(contactreceive, Contact.class);
Contact contactObject = contact1.get(0);
Contact contact = new Contact(contactObject.getId(),contactObject.getName(),
contactObject.getMobile());
关于java - json 数组中的对象未获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586926/