处理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'