为什么" class"作为JSON包含的关键?

时间:2014-03-13 16:55:31

标签: java json

我正在尝试创建一个JSON对象,但在JSON对象中获取“类”键。

我正在使用this库。

以下是我正在使用的代码。

    //Class being used for JSON conversion.
package com.test;
    public class Sample {

        public String name;

        public String surname;



        public Sample(String name, String surname) {
            this.name = name;
            this.surname = surname;
        }

        public String getName() {
            return name;
        }

        public String getSurname() {
            return surname;
        }


    }


    public static void main(String[] args){
    Sample sample = new Sample("Sam", "Sammy");
    System.out.println(new JSONObject(sample));

    }

我得到了json:

{"class":"class com.test.Sample","surname":"Sammy","name":"Sam"}

2 个答案:

答案 0 :(得分:5)

constructor you are using被描述为(强调我的):

  

使用bean getter从Object构造一个JSONObject。 它反映了对象的所有公共方法。对于没有参数且名称以“get”或“is”开头,后跟大写字母的每个方法,将调用该方法,并将一个键和从getter方法返回的值放入新的JSONObject中。通过删除“get”或“is”前缀来形成密钥。如果第二个剩余字符不是大写字母,则第一个字符将转换为小写字母。例如,如果一个对象有一个名为“getName”的方法,并且调用object.getName()的结果是“Larry Fine”,那么JSONObject将包含“name”:“Larry Fine”。

看起来这个构造函数不会对.getClass() publicObject的{​​{1}}做例外;)

答案 1 :(得分:1)

快速执行此操作:Remove类属性。

JSonObject obj = new JSONObject(sample);
obj.remove("class");
System.out.println(obj);