采用json-lib-2.4-jdk15.jar把json转化为vo类的时候抛异常,异常信息如下:
net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'id' has no setter method in class 'class org.research.json.Student'
at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy._setProperty(PropertySetStrategy.java:69)
at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy.setProperty(PropertySetStrategy.java:60)
at net.sf.json.JSONObject.setProperty(JSONObject.java:1394)
at net.sf.json.JSONObject.toBean(JSONObject.java:366)
at net.sf.json.JSONObject.toBean(JSONObject.java:233)
原因是vo类不是public的,错误代码如下:
public class TestJson {
public static void main(String[] args) {
Map<String, Class<String>> classMap = new HashMap<String, Class<String>>();
classMap.put("id", String.class);
classMap.put("name", String.class);
String content = "{ \"id\": \"Elliotte\", \"name\":\"Harold\" }";
Student vo = new Student();
try {
vo = (Student) JSONObject.toBean(JSONObject.fromObject(content), Student.class);
System.out.println("**Student:" + vo);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
正确的做法是vo类为非public,产生错误的原因,看java的反射,lib中操作vo属性是调用的是如下代码:
Field field = bean.getClass().getField( key );
if( field != null ){
field.set( bean, value );
}
分享到:
相关推荐
- **定义**:`JSONException` 是在处理 JSON 数据时可能会遇到的异常类,通常用于表示诸如键为空、使用了 JSON 不支持的数字格式等情况。 - **处理方式**:在实际编程过程中,应该通过捕获此类异常来确保程序的健壮...
JsonUtil
例如,`JSONObject`用于创建和操作JSON对象,`JSONArray`处理JSON数组,`JSONStringer`帮助构建JSON字符串,以及`JSONException`用于处理可能出现的错误。 使用`org.json`库进行JSON转换的基本步骤如下: 1. 创建...
- **异常处理**:在转换过程中,可能会遇到JSON格式错误、字段不匹配等问题,应捕获并处理`JSONException`。 以上就是使用`net.sf.json.JSONObject`进行JSON操作的基本步骤和进阶技巧。在实际开发中,你可能还需要...
5. **错误处理**:在处理JSON时,需要注意JSON格式的正确性,避免出现解析异常。例如,尝试访问不存在的键会导致`JSONException`。因此,使用`opt()`系列方法(如`optString()`, `optInt()`)可以更安全地处理可能不...
JSONException是当解析、序列化或构造JSON时遇到错误时抛出的异常。这通常发生在尝试访问不存在的键,或者JSON数据格式不正确时。开发人员应该适当地捕获并处理这种异常,以确保程序的健壮性。 **JSONString**: ...
`JSONArray`和`JSONObject`分别代表JSON数组和JSON对象,`JSONException`是处理JSON操作时可能出现的异常。`JSONSerializer`则提供了一种通用的方式来序列化和反序列化Java对象为JSON。 在实际开发中,除了`...
5. **JSONException**: 当JSON操作过程中出现错误时,会抛出`JSONException`。这可能是由于语法错误、非法类型转换或者在解析过程中遇到无法处理的情况。 6. **其他辅助类**: 包中还可能包含`JSONTokener`,用于...
3. **JSONException**: 这是处理JSON时抛出的异常类,通常当JSON格式错误或者解析出错时会抛出。 4. **JSONStringer**: 提供了一种构建JSON字符串的方法,通过调用一系列的方法,可以构造出复杂的JSON结构。 5. **...
否则,如果抛出异常(如`JSONException`),说明字符串不符合JSON格式,方法返回`false`。 请注意,这种方法只能验证JSON对象,如果需要验证JSON数组,可以使用`JSONArray`类代替`JSONObject`。另外,虽然这种方法...
`json-lib`提供了异常处理机制,如`JSONException`,帮助你在程序中捕获并处理这些错误。 在实际开发中,使用`json-lib`库可以简化JSON数据的操作,提高开发效率。不过,值得注意的是,尽管`json-lib`历史悠久,但...
7. **错误处理**:当解析JSON字符串或生成JSON对象时,如果遇到问题,`net.sf.json`会抛出异常,如`JSONException`,帮助开发者定位并解决问题。 总之,`net.sf.json`是一个强大的Java JSON处理库,它提供了一整套...
比如,当尝试访问不存在的键,或者JSON格式不正确时,都会抛出这个异常。 除了这些基本的类,`org.json.jar`还提供了其他一些实用功能,例如: - **XML与JSON的转换**: `XML.toString(JSONObject)`和`JSONObject....
6. **错误处理**:`JSONException` 是`org.json`库中的异常类,当解析JSON数据时遇到问题(如格式错误、键不存在等)时会抛出此异常。在使用`get()`、`opt()`等方法时,应捕获并处理此类异常。 7. **其他辅助类**:...
在解析过程中,如果JSON字符串格式不正确,`json-lib`会抛出`JSONException`。因此,解析时需要捕获并处理这类异常,确保程序的健壮性。 7. **性能优化** 虽然`json-lib`提供了方便的API,但在处理大量数据时,其...
6. **错误处理**:在处理JSON数据时,需要捕获可能抛出的异常,如`JSONException`。 在页面传值场景下,json-lib-2.4可以帮助开发者将服务器端处理的结果转换成JSON格式,然后通过HTTP响应发送到前端。前端...
JSON-lib会抛出`JSONException`,开发者需要捕获并处理这些异常,以确保程序的健壮性。 总的来说,JSON-lib是一个全面的JSON处理工具,它简化了JSON和Java对象之间的交互,使得开发人员能够在Java环境中轻松地使用...
6. **错误处理**:处理可能发生的异常,如`JSONException`,确保程序的健壮性。 JSON.jar文件在Java开发中的应用非常广泛,无论是服务器端API的响应,还是客户端的数据交互,都离不开JSON格式的数据交换。因此,...
1. 错误处理:在进行JSON操作时,需捕获JSONException异常,确保程序的健壮性。 2. 性能考虑:org.json库虽然轻量,但在处理大量数据时性能可能不如Gson或Jackson库。根据项目需求选择合适的库。 3. 版本差异:题目...
当JSON格式错误或者类型转换不匹配时,这个异常会被抛出。 除了`JsonUtils`之外,`json-lib`库还包括其他工具类,如`JSONArray`, `JSONObject`, `JSONTokener`等,它们分别对应JSON的数组、对象和解析器,提供了...