java - json 数组中的对象未获取

标签 java arrays json

在我的 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 字符串以 [] 开头和结尾,因此 GSONJackson 或任何其他解析器将解析数组。因此,为了解决这个问题,你必须这样做

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/

相关文章:

C++ 析构函数调用数组索引?在非线程安全的引用计数对象上崩溃

javascript - 在 node.js 中转换 JSON

json - 如何在 dart 中映射动态 json api 响应

java - 为什么这个模式不匹配? ([\\\\A\\\\W]其[\\\\W\\\\z])

java多重继承ActionBarActivity

arrays - 使用 Ruby 读取 YAML,意外的返回类型

python : Get value from a list of Json dictionary

java - 如何在 Android Studio 上向我的项目添加库?

java - ArrayAdapter 要求资源 ID 为 TextView

javascript - 在数组值之间循环