fastJSON解析遇到属性名是数字的怎么办

JSON字符串
{
"error_code": 0,
"reason": "success",
"result": {
"1": "A或者正确",
"10": "BC",
"11": "BD",
"12": "CD",
"13": "ABC",
"14": "ABD",
"15": "ACD",
"16": "BCD",
"17": "ABCD",
"2": "B或者错误",
"3": "C",
"4": "D",
"7": "AB",
"8": "AC",
"9": "AD"
}
}
我不可能建出如下类,也就不能使用fastJSON解析
private String 1;

private String 10;

private String 11;

private String 12;

private String 13;

private String 14;

private String 15;

private String 16;

private String 17;

private String 2;

private String 3;

private String 4;

private String 7;

private String 8;

private String 9;

public void set1(String 1){
this.1 = 1;
}
public String get1(){
return this.1;
}
public void set10(String 10){
this.10 = 10;
}
public String get10(){
return this.10;
}
public void set11(String 11){
this.11 = 11;
}
public String get11(){
return this.11;
}
public void set12(String 12){
this.12 = 12;
}
public String get12(){
return this.12;
}
public void set13(String 13){
this.13 = 13;
}
public String get13(){
return this.13;
}
public void set14(String 14){
this.14 = 14;
}
public String get14(){
return this.14;
}
public void set15(String 15){
this.15 = 15;
}
public String get15(){
return this.15;
}
public void set16(String 16){
this.16 = 16;
}
public String get16(){
return this.16;
}
public void set17(String 17){
this.17 = 17;
}
public String get17(){
return this.17;
}
public void set2(String 2){
this.2 = 2;
}
public String get2(){
return this.2;
}
public void set3(String 3){
this.3 = 3;
}
public String get3(){
return this.3;
}
public void set4(String 4){
this.4 = 4;
}
public String get4(){
return this.4;
}
public void set7(String 7){
this.7 = 7;
}
public String get7(){
return this.7;
}
public void set8(String 8){
this.8 = 8;
}
public String get8(){
return this.8;
}
public void set9(String 9){
this.9 = 9;
}
public String get9(){
return this.9;
}

}
这样肯定报错啊
求大神解答

 String str = "{\"error_code\": 0,"+
            "\"reason\": \"success\","+
            "\"result\": {"+
            "\"1\": \"A或者正确\","+
            "\"10\": \"BC\","+
            "\"11\": \"BD\","+
            "\"12\": \"CD\","+
            "\"13\": \"ABC\","+
            "\"14\": \"ABD\","+
            "\"15\": \"ACD\","+
            "\"16\": \"BCD\","+
            "\"17\": \"ABCD\","+
            "\"2\": \"B或者错误\","+
            "\"3\": \"C\","+
            "\"4\": \"D\","+
            "\"7\": \"AB\","+
            "\"8\": \"AC\","+
            "\"9\": \"AD\"}}";
        JSONObject obj = JSONObject.parseObject(str);
        String result = obj.getString("result");
        JSONObject obj1 = JSONObject.parseObject(result);
        System.out.println(obj1.getString("1"));这不是很正常吗,你那边怎么写的?

解析成object,手动取不行吗,,

第一个类:
package org.atool.json2bean;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

public class JsonRootBean {

@JsonProperty("error_code")
private int errorCode;
private String reason;
private Result result;
public void setErrorCode(int errorCode) {
     this.errorCode = errorCode;
 }
 public int getErrorCode() {
     return errorCode;
 }

public void setReason(String reason) {
     this.reason = reason;
 }
 public String getReason() {
     return reason;
 }

public void setResult(Result result) {
     this.result = result;
 }
 public Result getResult() {
     return result;
 }

}

第二个类:

package org.atool.json2bean;

public class Result {

private String 1;
private String 2;
private String 3;
private String 4;
private String 7;
private String 8;
private String 9;
private String 10;
private String 11;
private String 12;
private String 13;
private String 14;
private String 15;
private String 16;
private String 17;
public void set1(String 1) {
     this.1 = 1;
 }
 public String get1() {
     return 1;
 }

public void set2(String 2) {
     this.2 = 2;
 }
 public String get2() {
     return 2;
 }

public void set3(String 3) {
     this.3 = 3;
 }
 public String get3() {
     return 3;
 }

public void set4(String 4) {
     this.4 = 4;
 }
 public String get4() {
     return 4;
 }

public void set7(String 7) {
     this.7 = 7;
 }
 public String get7() {
     return 7;
 }

public void set8(String 8) {
     this.8 = 8;
 }
 public String get8() {
     return 8;
 }

public void set9(String 9) {
     this.9 = 9;
 }
 public String get9() {
     return 9;
 }

public void set10(String 10) {
     this.10 = 10;
 }
 public String get10() {
     return 10;
 }

public void set11(String 11) {
     this.11 = 11;
 }
 public String get11() {
     return 11;
 }

public void set12(String 12) {
     this.12 = 12;
 }
 public String get12() {
     return 12;
 }

public void set13(String 13) {
     this.13 = 13;
 }
 public String get13() {
     return 13;
 }

public void set14(String 14) {
     this.14 = 14;
 }
 public String get14() {
     return 14;
 }

public void set15(String 15) {
     this.15 = 15;
 }
 public String get15() {
     return 15;
 }

public void set16(String 16) {
     this.16 = 16;
 }
 public String get16() {
     return 16;
 }

public void set17(String 17) {
     this.17 = 17;
 }
 public String get17() {
     return 17;
 }

}

 JSONObject jsonobj = JSONObject.parseObject(jsonStr);
     JSONObject objs = jsonobj.parseObject("result");
     String x = jo.getString("1");
    这个数字不是你要获得的属性名么,你如果存成一个bean里就自己命名,不需要再写成数字。不要纠结

FastJSON使用心得——如何解析带中文或者数字key的数据
原创 2015年09月20日 19:26:47 标签:json /android 3635
今天群里有人怎么快速解析带中文key或者数字key的json数据,示例数据格式如下:

{
"姓名": "张三",
"年龄": 12
 }

最开始以为没办法使用快速解析了 只能一个个的按照键值对来取 后来感觉阿里巴巴的大牛应该早就考虑到了这些问题

于是百度了一下 发现果然有解决办法 直接用注解就好了,实体类写法如下:

[java] view plain copy
public class PeopleBean {

@JSONField(name = "姓名")  
String name;  

@JSONField(name = "年龄")  
int age;  

public String getName() {  
    return name;  
}  

public void setName(String name) {  
    this.name = name;  
}  

public int getAge() {  
    return age;  
}  

public void setAge(int age) {  
    this.age = age;  
}  

}

其他的写法就和平时一样了