`
小网客
  • 浏览: 1244414 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

json跟Bean转换抛异常JSONException,NoSuchMethodException

    博客分类:
  • Java
 
阅读更多

采用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 );
 }
 

 

0
1
分享到:
评论

相关推荐

    json数据格式转换

    - **定义**:`JSONException` 是在处理 JSON 数据时可能会遇到的异常类,通常用于表示诸如键为空、使用了 JSON 不支持的数字格式等情况。 - **处理方式**:在实际编程过程中,应该通过捕获此类异常来确保程序的健壮...

    redis存储时list转JSON,JSON转List遇到的JSONException

    JsonUtil

    Java中后台JSON转换包

    例如,`JSONObject`用于创建和操作JSON对象,`JSONArray`处理JSON数组,`JSONStringer`帮助构建JSON字符串,以及`JSONException`用于处理可能出现的错误。 使用`org.json`库进行JSON转换的基本步骤如下: 1. 创建...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    - **异常处理**:在转换过程中,可能会遇到JSON格式错误、字段不匹配等问题,应捕获并处理`JSONException`。 以上就是使用`net.sf.json.JSONObject`进行JSON操作的基本步骤和进阶技巧。在实际开发中,你可能还需要...

    JSON_java转换包

    5. **错误处理**:在处理JSON时,需要注意JSON格式的正确性,避免出现解析异常。例如,尝试访问不存在的键会导致`JSONException`。因此,使用`opt()`系列方法(如`optString()`, `optInt()`)可以更安全地处理可能不...

    解析json的工具类,包括JSONObject、JSONArray、JSONException、JSONString等

    JSONException是当解析、序列化或构造JSON时遇到错误时抛出的异常。这通常发生在尝试访问不存在的键,或者JSON数据格式不正确时。开发人员应该适当地捕获并处理这种异常,以确保程序的健壮性。 **JSONString**: ...

    JSON与JAVA数据的相互转换

    `JSONArray`和`JSONObject`分别代表JSON数组和JSON对象,`JSONException`是处理JSON操作时可能出现的异常。`JSONSerializer`则提供了一种通用的方式来序列化和反序列化Java对象为JSON。 在实际开发中,除了`...

    json-src json 源码

    5. **JSONException**: 当JSON操作过程中出现错误时,会抛出`JSONException`。这可能是由于语法错误、非法类型转换或者在解析过程中遇到无法处理的情况。 6. **其他辅助类**: 包中还可能包含`JSONTokener`,用于...

    org.json.jar工具包下载(可用)

    3. **JSONException**: 这是处理JSON时抛出的异常类,通常当JSON格式错误或者解析出错时会抛出。 4. **JSONStringer**: 提供了一种构建JSON字符串的方法,通过调用一系列的方法,可以构造出复杂的JSON结构。 5. **...

    java验证字符串是否符合json格式

    否则,如果抛出异常(如`JSONException`),说明字符串不符合JSON格式,方法返回`false`。 请注意,这种方法只能验证JSON对象,如果需要验证JSON数组,可以使用`JSONArray`类代替`JSONObject`。另外,虽然这种方法...

    java json api,json api

    `json-lib`提供了异常处理机制,如`JSONException`,帮助你在程序中捕获并处理这些错误。 在实际开发中,使用`json-lib`库可以简化JSON数据的操作,提高开发效率。不过,值得注意的是,尽管`json-lib`历史悠久,但...

    net.sf.json jar包

    7. **错误处理**:当解析JSON字符串或生成JSON对象时,如果遇到问题,`net.sf.json`会抛出异常,如`JSONException`,帮助开发者定位并解决问题。 总之,`net.sf.json`是一个强大的Java JSON处理库,它提供了一整套...

    Java下的json解析工具包:org.json.jar包

    比如,当尝试访问不存在的键,或者JSON格式不正确时,都会抛出这个异常。 除了这些基本的类,`org.json.jar`还提供了其他一些实用功能,例如: - **XML与JSON的转换**: `XML.toString(JSONObject)`和`JSONObject....

    org.json.jar包

    6. **错误处理**:`JSONException` 是`org.json`库中的异常类,当解析JSON数据时遇到问题(如格式错误、键不存在等)时会抛出此异常。在使用`get()`、`opt()`等方法时,应捕获并处理此类异常。 7. **其他辅助类**:...

    json-lib 解析json串工具类

    在解析过程中,如果JSON字符串格式不正确,`json-lib`会抛出`JSONException`。因此,解析时需要捕获并处理这类异常,确保程序的健壮性。 7. **性能优化** 虽然`json-lib`提供了方便的API,但在处理大量数据时,其...

    json-lib-2.4和相应的依赖包

    6. **错误处理**:在处理JSON数据时,需要捕获可能抛出的异常,如`JSONException`。 在页面传值场景下,json-lib-2.4可以帮助开发者将服务器端处理的结果转换成JSON格式,然后通过HTTP响应发送到前端。前端...

    JSON-lib

    JSON-lib会抛出`JSONException`,开发者需要捕获并处理这些异常,以确保程序的健壮性。 总的来说,JSON-lib是一个全面的JSON处理工具,它简化了JSON和Java对象之间的交互,使得开发人员能够在Java环境中轻松地使用...

    json_jar_JSON_json.jar_

    6. **错误处理**:处理可能发生的异常,如`JSONException`,确保程序的健壮性。 JSON.jar文件在Java开发中的应用非常广泛,无论是服务器端API的响应,还是客户端的数据交互,都离不开JSON格式的数据交换。因此,...

    org.json.JSON.zip

    1. 错误处理:在进行JSON操作时,需捕获JSONException异常,确保程序的健壮性。 2. 性能考虑:org.json库虽然轻量,但在处理大量数据时性能可能不如Gson或Jackson库。根据项目需求选择合适的库。 3. 版本差异:题目...

    json-lib JsonUtils 工具类,json-lib 工具类

    当JSON格式错误或者类型转换不匹配时,这个异常会被抛出。 除了`JsonUtils`之外,`json-lib`库还包括其他工具类,如`JSONArray`, `JSONObject`, `JSONTokener`等,它们分别对应JSON的数组、对象和解析器,提供了...

Global site tag (gtag.js) - Google Analytics