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;
}
}
其他的写法就和平时一样了