json字符串怎么转换为java对象

天子剑毅 2012-09-07 03:05:28
先贴代码
public static void main(String[] args) {
String json="{"+
"'PriceProductType': '1',"+
"'PriceRouteType': 'OW',"+
"'PriceList': [{"+
"'PassengerType': 'ADT',"+
"'FareBasis': 'Y93',"+
"'TourCode': 'EH',"+
"'Discount': '93',"+
"'EI': '免费更改',"+
"'Comment': 'null',"+
"'Baggage': '20KG',"+
"'ValidityPeriod': 'null',"+
"'MinStay': 'null',"+
"'PriceValue': 1760,"+
"'RSP': 1890,"+
"'RefundedFlag': true,"+
"'RefundedComment': '航班起飞前2小时(含),免费退票;航班起飞前2小时内及航班起飞后,收取10%的退票手续费(退票手续费不得低于50元)。',"+
"'ChangedComment': '免费改期;允许签转;',"+
"'RescheduledFlag': true,"+
"'FreeChangeTimes': 99,"+
"'UpgradeFlag': true,"+
"'ChangeAirLineFlag': true,"+
"'YPrice': 1890,"+
"'FareID': '17292',"+
"'YQTax': 100,"+
"'CNTax': 50,"+
"'CombineRuleInfo': 'null',"+
"'FareSign': 'AD489916A9561C9757E00F2475E60CDBDD5E66C2'" +
"}]" +
"}";
json = json.replace("null", "1111");
System.out.println(json);
Map<String, Object> classMap = new HashMap<String, Object> ();
classMap.put( "PriceList", HOPrice.class );


HOProductPrice bean = (HOProductPrice)JSONObject.toBean( JSONObject.fromObject(json), HOProductPrice.class, classMap);
System.out.println(bean);

}

public class HOProductPrice {
public HOProductPrice() {
super();
}

private String PriceProductType = "";
private String PriceRouteType = "";
private List<HOPrice> PriceList;
//set,get

}
public class HOPrice {
public HOPrice() {
super();
}

private String PassengerType = "";
private String FareBasis = "";
private String TourCode = "";
private String Discount = "";
private String EI = ""; //
private String Comment = "";
private String Baggage = "";
private String ValidityPeriod = "";
private String MinStay = "";
private double PriceValue = 0.0 ;
private double RSP = 0.0 ; //
private boolean RefundedFlag;
private String RefundedComment = "";
private String ChangedComment = "";
private boolean RescheduledFlag;
private int FreeChangeTimes = 0 ;
private boolean ChangeAirLineFlag;
private boolean UpgradeFlag ;
private double YPrice = 0.0 ; //
private String FareID = "";
private double YQTax = 0.0; //
private double CNTax = 0.0; //
private String FareSign = "";
private String CombineRuleInfo="";
//set,get
}

...全文
5964 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yhzhtk 2012-09-10
  • 打赏
  • 举报
回复
你想他自动转为bean啊,不如你自己遍历一下JSONObject,将get得到的数据赋值给bean不就行了。

[Quote=引用 3 楼 的回复:]

to gdhapple:你的方法早就试过了,解决不了问题。
要把Json字符串直接转换为java对象,并且转化了的java对象里要有值
[/Quote]
lhw1204 2012-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
可以用Gson,google的。
[/Quote]

scbb 2012-09-08
  • 打赏
  • 举报
回复
http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html
看最下面 5、 将JSON转换java对象
捏造的信仰 2012-09-07
  • 打赏
  • 举报
回复
两个库用得比较多:fastjson 和 gson。
cjh_tostring 2012-09-07
  • 打赏
  • 举报
回复
可以用Gson,google的。
天子剑毅 2012-09-07
  • 打赏
  • 举报
回复
to gdhapple:你的方法早就试过了,解决不了问题。
要把Json字符串直接转换为java对象,并且转化了的java对象里要有值
Yhzhtk 2012-09-07
  • 打赏
  • 举报
回复
举个例吧:

import net.sf.json.JSONObject;

public class JsonTest {

public static void main(String[] args) {
String str = "{\"lendperson\":\"李四\",\"lendcompany\":\"有限公司\",\"checkperson\":\"李四\",\"lenddate\":\"2010-07-19T00:00:00\",\"lendcounts\":4,\"" +
"passports\":[{\"passportid\":\"d\",\"name\":\"李豫川\",\"passporttype\":\"K\"},{\"passportid\":\"K9051\",\"name\":\"李平\",\"passporttype\":\"K\"}," +
"{\"passportid\":\"K90517\",\"name\":\"袁寒梅\",\"passporttype\":\"K\"},{\"passportid\":\"K905199\",\"name\":\"贺明\",\"passporttype\":\"K\"}]}";

JSONObject j = JSONObject.fromObject(str);
System.out.println(j.get("lendperson"));
}
}


要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
天子剑毅 2012-09-07
  • 打赏
  • 举报
回复
想把json格式转换为java对象,不知道哪里弄错了。请赐教!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧