`

JSON: property "xxx" has no getter method in class "..."

    博客分类:
  • json
阅读更多
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'name' has no getter method
解决:声明bean为public class xxx,必须是public,我用默认类型(class xxx)都不行
json-lib.jar开发包使用:

依赖包:
commons-beanutils.jar;
commons-httpclient.jar;
commons-lang.jar;
ezmorph.jar;不少人使用时会提示net.sf.ezmorph.xxx找不到,就是缺这个:
morph-1.0.1.jar

相关链接:
http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/

使用过程中问题:
1,把bean转化为json格式时老提示如下错误:
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'name' has no getter method
解决:声明bean为public class xxx,必须是public,我用默认类型(class xxx)都不行

2,Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.lang.ArrayUtils.toObject([C)[Ljava/lang/Character;
原因:定义属性如下:private char[] options = new char[] { 'a', 'f' };好像不能处理这种类型的

3, private String func1 = "function(i){ return this.options[i]; }";
   和
   private JSONFunction func2 = new JSONFunction(new String[] { "i" },
     "return this.options[i];");
   转换后显示结果差不多:
   {"func1":function(i){ return this.options[i];,"func2":function(i){ return this.options[i]; }}

测试类:
 
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import net.sf.json.JSONArray;  
  7. import net.sf.json.JSONObject;  
  8.   
  9. public class Json {  
  10.     public static void main(String[] args) {  
  11.         Json j = new Json();  
  12.         j.bean2json();  
  13.     }  
  14.   
  15.     public void arr2json() {  
  16.         boolean[] boolArray = new boolean[] { truefalsetrue };  
  17.         JSONArray jsonArray = JSONArray.fromObject(boolArray);  
  18.         System.out.println(jsonArray);  
  19.         // prints [true,false,true]  
  20.     }  
  21.   
  22.     public void list2json() {  
  23.         List list = new ArrayList();  
  24.         list.add("first");  
  25.         list.add("second");  
  26.         JSONArray jsonArray = JSONArray.fromObject(list);  
  27.         System.out.println(jsonArray);  
  28.         // prints ["first","second"]  
  29.     }  
  30.   
  31.     public void createJson() {  
  32.         JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']");  
  33.         System.out.println(jsonArray);  
  34.         // prints ["json","is","easy"]  
  35.     }  
  36.   
  37.     public void map2json() {  
  38.         Map
  39.         map.put("name""json");  
  40.         map.put("bool", Boolean.TRUE);  
  41.         map.put("int"new Integer(1));  
  42.         map.put("arr"new String[] { "a""b" });  
  43.         map.put("func""function(i){ return this.arr[i]; }");  
  44.   
  45.         JSONObject json = JSONObject.fromObject(map);  
  46.         System.out.println(json);  
  47.         // prints  
  48.         // ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){  
  49.         // return this.arr[i]; }]  
  50.     }  
  51.   
  52.     public void bean2json() {  
  53.         JSONObject jsonObject = JSONObject.fromObject(new MyBean());  
  54.         System.out.println(jsonObject);  
  55.         /* 
  56.          * prints  
  57.          * {"func1":function(i){ return this.options[i]; 
  58.          * },"pojoId":1,"name":"json","func2":function(i){ return 
  59.          * this.options[i]; }} 
  60.          */  
  61.     }  
  62.   
  63.     public void json2bean() {  
  64.         String json = "{name=\"json2\",func1:true,pojoId:1,func2:function(a){ return a; },options:['1','2']}";  
  65.         JSONObject jb = JSONObject.fromString(json);  
  66.         JSONObject.toBean(jb, MyBean.class);  
  67.         System.out.println();  
  68.     }  
  69. }  

操作的bean:
 
  1. import net.sf.json.JSONFunction;  
  2.   
  3. public class MyBean {  
  4.     private String name = "json";  
  5.     private int pojoId = 1;  
  6.     // private char[] options = new char[] { 'a', 'f' };  
  7.     private String func1 = "function(i){ return this.options[i]; }";  
  8.     private JSONFunction func2 = new JSONFunction(new String[] { "i" },  
  9.             "return this.options[i];");  
  10.   
  11.     // getters & setters  
  12.     ......  
  13. }  

题外话: 这个我对json-lib包的初次尝试,希望对大家有所帮助,另外大家有谁用过其它处理json的开发包,提出来,大家探讨一下~!!!!
分享到:
评论
1 楼 宋建勇 2012-07-15  

相关推荐

    Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案

    然而,当遇到单个参数是基本类型如`java.lang.Integer`或`java.lang.String`时,如果按照处理对象类型的参数方式直接在`<if>`中使用参数名,可能会遇到异常`There is no getter for property named 'xxx' in 'class ...

    property用法.txt

    ### property用法详解 在Java Web开发中,特别是使用Struts2框架时,`property`标签是处理数据展示的关键工具之一。它主要用于显示Action中的属性值。本文将深入解析`property`标签的各种用法,帮助开发者更好地...

    PyPI 官网下载 | getty-getter-0.0a.tar.gz

    标题中的"PyPI 官网下载 | getty-getter-0.0a.tar.gz"指出这是一个从Python Package Index(PyPI)官方下载的软件包,名为"getty-getter",版本为0.0a,格式为tar.gz。PyPI是Python社区的主要仓库,它存储并分发...

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    在进行JSON与Java对象互转时,需要注意的是,Java对象的属性必须有对应的getter和setter方法,因为`JSONObject`依赖于Java的反射机制来读取和设置属性。此外,`JSONObject`在处理枚举类型时可能需要特别处理,通常会...

    dubbo-admin 管理后台2.5.4 for JDK8

    Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type ...

    java普通类编译成json但只是当前类的有getter、setter方法的版本

    这个场景中提到的是将一个Java类编译成JSON,但只包含那些具有getter和setter方法的属性。这样的转换有助于减少JSON输出中的冗余信息,只保留与业务逻辑相关的数据。下面我们将深入探讨这个过程。 首先,我们需要...

    很好用的JAVA类转JSON工具:FastJSON (2).docx

    **FastJSON:高效便捷的Java JSON库** FastJSON是阿里巴巴提供的一款开源的Java JSON库,它具有极高的性能和易用性,广泛应用于各种Java项目中。与JsonLib等其他JSON处理库相比,FastJSON虽然在某些高级特性上可能...

    JavaScript中setter和getter方法介绍_.docx

    在JavaScript中,setter和getter是两种特殊的方法,用于对象属性的访问控制。它们提供了一种方式来监视或修改对象属性的读取和赋值行为,从而增强了数据的安全性和灵活性。在JavaScript的ECMAScript规范中,setter和...

    支持jdk8版本dubbo-admin

    property 'URIType' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 这个问题我也在网上找了很久也没有好的解决方案,最后还是...

    signs_getter_setter:签署常量和Getter-Setter ..

    在JavaScript编程中,"signs_getter_setter"是一个常见的概念,它涉及到对象属性的访问控制和封装。标记常量通常是指将某些变量定义为不可更改的,而Getter-Setter则是一种面向对象编程中的特性,用于获取(get)或...

    Java解析json数据,方法不需要修改传json参数就行了

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能轻易地阅读和编写。JSON数据通常用于前后端交互,因为它的结构清晰,易于解析和生成。本篇文章将重点讲解如何在...

    SSH错误集锦

    5. “No getter method for property XXX of bean teacher” 这个错误通常发生在 JSP 里要取一个 bean 的属性出来,但这个 bean 并没有这个属性。解决方法是检查 JSP 中某个标签的 property 属性的值。 6. ...

    PyPI 官网下载 | easy-module-attribute-getter-0.9.37.tar.gz

    《PyPI官网下载:探索easy-module-attribute-getter-0.9.37》 在Python的世界里,PyPI(Python Package Index)是广大开发者获取和分享Python库的重要平台。"easy-module-attribute-getter"是一款在PyPI上发布的...

    java的json依赖包.rar

    // 为了转换为JSON,User类需要提供getter和setter方法 // ... } ``` 在这个例子中,`User`类的实例被转换成了一个`JSONObject`,并打印出对应的JSON字符串。 另一种常见的JSON处理库是`com.alibaba.fastjson`,...

    JSON - JAVA 使用方法.docx

    map = Json.fromJson(HashMap.class, Lang.trim(json)); // 注意这里可能需要异常处理 ``` 总的来说,JSON是Java开发中不可或缺的数据交换工具,通过各种JSON库,我们可以方便地在Java对象和JSON字符串之间进行转换...

    org.springframework.web.servlet-3.0.1.RELEASE-A.jar

    Invalid property 'error_view' of bean class [com.demo.controller.action.AuthorAction]: Bean property 'error_view' is not writable or has an invalid setter method. Does the parameter type of the ...

    json 开发包使用

    1. **Bean转化为JSON时的错误**:当尝试将一个bean转化为JSON时,如果bean不是public的,可能会抛出`JSONException`,提示“Property 'name' has no getter method”。这是因为JSON转化需要bean的属性有getter方法,...

    【IT十八掌徐培成】Java基础第25天-03.递归获取所有超类-内省获取所有属性-getter-setter.zip

    String name = (String) getter.invoke(person); Method setter = personClass.getMethod("setName", String.class); setter.invoke(person, "张三"); ``` 总结起来,"【IT十八掌徐培成】Java基础第25天-03.递归...

    Dubbo管理控制台dubbo admin2.X for jdk8 (window,liunx)

    [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of ...

    使用@IdClass创建联合主键,并实现外部关联

    使用@IdClass创建联合主键,并实现外部关联 在 Java Persistence API(JPA)中,联合主键是指由多个字段组成的主键,可以使用@IdClass注解来实现。在本文中,我们将介绍如何使用@IdClass创建联合主键,并实现外部...

Global site tag (gtag.js) - Google Analytics