Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象未提取的json数组_Java_Arrays_Json - Fatal编程技术网

Java 对象未提取的json数组

Java 对象未提取的json数组,java,arrays,json,Java,Arrays,Json,在我的JavaSpring项目中,我有一个带有对象的json数组字符串。我想从字符串中提取数据,然后保存到数据库中 因此,我: 波乔班 public class Contact { private String id; private String name; private String mobile; //getters and settrs & constructors } 我想获取如下代码所示的数据: String stringdata=

在我的JavaSpring项目中,我有一个带有对象的json数组字符串。我想从字符串中提取数据,然后保存到数据库中

因此,我: 波乔班

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);
        }
    }
String stringdata=[“{”id:“1”,“mobile:“1860108”,“name:“Intex”}”,
“{”id:“21”,“mobile:“777717717”,“name:“pari”}”,
“{”id:“26”,“mobile:“172676236”,“name:“pari2”}”];
试一试{
触点1=新触点();
试一试{
contact1=new Gson().fromJson(contactreceive,Contact.class);
} 
捕获(不支持的编码异常uee){
返回新的响应属性(“失败”,HttpStatus.EXPECTATION\u失败);
}
Contact Contact=新联系人(contact1.getId(),contact1.getName(),contact1.getMobile());
userDao.saveContact(contact);
返回新的响应属性(“已创建”,HttpStatus.created);
}捕获(例外e){
logger.error(“移动用户注册>错误:+e.getMessage());
返回新的响应属性(HttpStatus.NO_内容);
}
}
但我得到了一个错误:

移动用户注册>错误:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第2列为BEGIN_数组


如果不删除数组,我如何获取该联系人?

当您需要单个类时,内容包含一个数组。您需要传递Contact类列表的类型,例如通过声明虚拟字段并获取其类型:

private static List<Contact> contactTypeField;

...
List<Contact> contacts = new Gson().fromJson(contactreceive,
        MyClass.getDeclaredField("contactTypeField").getGenericType());
私有静态列表contactTypeField;
...
List contacts=new Gson().fromJson(contactreceive,
MyClass.getDeclaredField(“contactTypeField”).getGenericType();

您的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());  
List contact1=new ArrayList();
contact1=new Gson().fromJson(contactreceive,Contact.class);

Contact contactObject=contact1.get(0); Contact Contact=新联系人(contactObject.getId(),contactObject.getName(), contactObject.getMobile());
试着把它包装成{“data”:[你的数组在这里]}显示一个代码示例,其中包含未声明且没有解释的变量,这是在浪费其他用户的时间。声明未使用的stringdata和未声明的userDao。此外,您应该格式化您的代码properly@Christian我想你没有意识到这只是一段代码。如果他发布了一个错误语句,那么代码将被编译。关于时间浪费,在SO上发布的每个人(包括您)都在浪费其他用户的时间。:)只有一个建议:如果你不能解决他的问题,就去问另一个问题或者去读一本书。不要发布任何内容。@Paulo,你说得对。示例中包含实际解析代码的类。Contact contactObject=contact1[0];我得到错误:--表达式的类型必须是数组类型,但解析为List@Preeti哎呀,我修好了