The method fromObject(String) is undefined for the type JSONObject

文章转载:http://my.oschina.net/wangwu91/blog/340721
如果有版权问题,请联系我。

原文标题:net.sf.json.JSONObject 和org.json.JSONObject 的差别

其实,出现fromObject没有被定义,是因为json有两个包,就是net.sf.json和org.json。在使用json的过程中,会有包的导入。
导入的页面

看你选择导入的包,如果选择的是org.json.json这个包,就会出现undefined。

下面是转载过来的文章。关于两个包之间的区别。
net.sf.json.JSONObject 和org.json.JSONObject 的差别。

一、创建json对象

String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":31503079.02}}

org.json.JSONObject:

JSONObject json = new JSONObject(str);

net.sf.json.JSONObject:

JSONObject json = JSONObject.fromObject(str);

net.sf.json.jsonobject 没有 new JSONObject(String)的构造方法

二、解析json

第一种直接用json对象.getXXX();方法获取
net.sf.json.JSONObject没有严格要求获取字段的类型跟getXXX()的类型一样
org.json.JSONObject获取的字段类型必须跟getXXX()的类型一样

e.g.

JSONObject msgObj = json.getJSONObject("msg");
String availableBalance = msgObj.getString("availableBalance");
{\"availableBalance\":\"31503079.02\"}}";

org.json.JSONObject 就会报错,可以msgObj.getDouble(“availableBalance”);也不会丢精度;

net.sf.json.JSONObject正确,但是精度会丢失,如果
String str = "{\"code\":\"0000\", \"msg\":

就不会丢失精度。

第二中json对象直接转变实体对象

public class BalanceDto {
private String availableBalance;
    public String getAvailableBalance() {
        return availableBalance;
    }
    public void setAvailableBalance(String availableBalance) {
        this.availableBalance = availableBalance;
    }
    public String toString(){
        return "availableBalance"+availableBalance;
    }
}

org.json.JSONObject:

BalanceDto alanceDto  = (BalanceDto) JSONObject.stringToValue(msgObj);

这个句话编译通过,但是运行会报错,原因是BalanceDto 类中availableBalance 的类型跟json中的“availableBalance ”类型不同意

net.sf.json.JSONObject:

String msg = json.getString("msg");
BalanceDto  alanceDto = (BalanceDto) JSONObject.toBean(
msg, new BalanceDto().getClass());

三、从json中获取数组

JSONArray subArray = json.getJSONArray(“msg”);

net.sf.json.JSONObject:

int leng = subArray.size();

org.json.JSONObject:

int leng = subArray.length();

json net.sf.json的需要的包:
下载地址:http://download.csdn.net/detail/shaoqianting/8698183

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JSONObjectfromObject方法是net.sf.json.JSONObject类中的一个静态方法,用于将Java对象转换为JSON对象。它接受一个参数,该参数可以是Map、List、Array、JavaBean等常见的Java数据类型。fromObject方法会将传入的Java对象转换为对应的JSON对象,并返回该JSON对象。 fromObject方法的使用示例有如下几种: 1. 将List集合转换为JSON对象: ```java List<String> list = new ArrayList<>();list.add("first"); list.add("second"); JSONArray jsonArray = JSONArray.fromObject(list); ``` 此代码将一个包含两个字符串元素的List集合转换为JSON数组对象。 2. 将Map集合转换为JSON对象: ```java Map<String, Object> map = new HashMap<>(); map.put("name", "json"); map.put("bool", Boolean.TRUE); map.put("int", new Integer(1)); map.put("arr", new String[] { "a", "b" }); map.put("func", "function(i){ return this.arr[i]; }"); JSONObject json = JSONObject.fromObject(map); ``` 此代码将一个包含不同类型键值对的Map集合转换为JSON对象。 3. 将JavaBean转换为JSON对象: ```java JSONObject jsonObject = JSONObject.fromObject(new JsonBean()); ``` 此代码将一个自定义的JavaBean对象转换为JSON对象。 4. 将数组转换为JSON对象: ```java boolean[] boolArray = new boolean[] { true, false, true }; JSONArray jsonArray = JSONArray.fromObject(boolArray); ``` 此代码将一个boolean类型的数组转换为JSON数组对象。 5. 将一般数据转换为JSON对象: ```java JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']"); ``` 此代码将一个包含三个字符串元素的一般数据转换为JSON数组对象。 总结起来,JSONObjectfromObject方法可以将Java对象转换为对应的JSON对象,无论是List、Map、JavaBean还是数组或一般数据都可以进行转换。该方法的使用非常简单,只需传入相应的Java对象即可。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值