JSON-JSON字符串转换成JSON对象、JSON对象数组、json对象数组直接转java对象list<E>形式

处理JSON字符串时,一直出错,写个例子后发现原来是没有弄清楚数据的格式问题。

实现的是 JSONString 转换成java对象 或是 list列表

实例类 News

package lyx.entity;
 
/**
 * @author lyx
 *    
 * 2015-8-10上午10:14:38
 *
 *
 *新闻类
 */
public class News {
 
    /**
     * 日期
     */
    private String date;
    
    /**
     * 链接
     */
    private String link;
    /**
     * 标题
     */
    private String title;
    
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getLink() {
        return link;
    }
    public void setLink(String link) {
        this.link = link;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    
}

测试类:
package test;
 
import java.util.ArrayList;
import java.util.List;
import com.pom.lyx.entity.News;
 
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
 
 
public class Test {
    
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        String str_news="[{'date':'2015-08-10 14:20:34','link':'http://news.baidu.com/n?cmd=2&class=hongguan&page=http://news.xinhuanet.com/finance/2015-08/10/c_128112246.htm&cls=hongguan','title':'发改委:尽快上报碳排放权交易管理条例 ――百度新闻搜索'}," +
                "{'date':'2015-08-10 14:13:22','link':'http://news.xinhuanet.com/finance/2015-08/10/c_128112246.htm','title':'发改委:尽快上报碳排放权交易管理条例-新华网'}," +
                "{'date':'2015-08-10 14:02:08','link':'http://guba.eastmoney.com/news,600271,193716538.html','title':'期待信心修复 14股潜伏现最佳时点'}," +
                "{'date':'2015-08-10 14:00:42','link':'http://www.escn.com.cn/news/show-259795.html','title':'外媒称中国欲将“APEC蓝”变常态'}]";
 
    //将JSON字符串转换成JSONArray
    JSONArray array_news =new JSONArray();
    array_news = JSONArray.fromObject(str_news);
    
    
    //JSONArray -> JSONObject ->News ->List
    List<News> newsList1 =new ArrayList<News>();    
    for (int i = 0; i < array_news.size(); i++) {
            //JSONObject对象
            JSONObject jsonObj =(JSONObject) array_news.get(i);
            
            //根据key获取对应的值
            System.out.println(jsonObj.getString("title"));
            //将JSONObject对象转换成实体类后添加到List列表中
            newsList1.add((News) JSONObject.toBean(jsonObj ,News.class));
            System.out.println(newsList1.get(i).getTitle()+":"+newsList1.get(i).getLink());
        }
        
    
    //JSONArray -> List
        @SuppressWarnings("unchecked")
         //将JSONArray转换成List列表
        List<News> newsList =(List<News>) JSONArray.toCollection(array_news, News.class);
        for (News news : newsList) {
            System.out.println(news.getDate()+":"+news.getTitle()+":"+news.getLink());
        }
    }
}

如何正确导入net.sf.json的jar包:JSONArray
如下:正常导入是这样的

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
</dependency>

然而,问题来了!!! 代码会报红,显示无法解析依赖:

为什么会这样,从中央仓库copy过来就是这样的啊,一字不差! 找了半天…原来要加jdk版本号,服气服气,如下才是正确的导入方式:

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>                                    //此处要加上jdk版本号
</dependency>

而且这个版本号还只能是15,不能是其他,我自己的JDK是1.8的。
O了,问题解决~

此外,如果是gradle,请如此引入:

 compile 'net.sf.json-lib:json-lib:2.4:jdk15'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值