您的位置:首页 > Web前端 > JavaScript

字符串转JSONArray

2016-05-20 00:00 411 查看
摘要: 写的servlet返回一组数据,格式如:{"names":"[\"吃货\",\"吃货2\"]"} -------接口访问时候的返回值都是字符串

目的:处理返回时的数据

问题:java操作字符串相对麻烦,而且本身后台返回的就是json格式。

方法一:

为了可以更清晰的看到各种类型变化,我采用了小白调试的方法----print..

//(以servlet类为测试环境)
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;

//fastjson-1.2.11.jar 阿里巴巴的jar包
import com.alibaba.fastjson.JSON;

....

PrintWriter out = response.getWriter();//servlet内置方法
ArrayList<String> names = new ArrayList<>();
names = DAO.getNames();//省略此方法
JSONObject job = new JSONObject();
try
{
job.put("names", names);
out.println(job + "  \t<---> job的类型: " + job.getClass().getName());

String namesString = job.getString("names");
out.println(namesString + "  \t\t<---> nameSrting=job.getString(\"names\")的类型: "
+ namesString.getClass().getName());

@SuppressWarnings("unchecked")
List<String> nList = (List<String>) JSON.parse(namesString);
out.println(nList + "  \t\t<---> nList=JSON.parse(nameSrting)的类型: "
+ nList.getClass().getName());
out.println(nList.size() + "  \t\t<---> nList.size()");

Object[] arr = nList.toArray();  //转成数组对象
out.println(arr.length + "  \t\t<---> arr.length");
for (int i = 0; i < arr.length; i++)
{
out.println("arr[" + i + "]: " + arr[i]);
}

} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
....

浏览器显示结果:

{"names":"[\"吃货\"]"}  	<---> job的类型: org.json.JSONObject
["吃货"]  		<---> nameSrting=job.getString("names")的类型: java.lang.String
["吃货"]  		<---> nList=JSON.parse(nameSrting)的类型: com.alibaba.fastjson.JSONArray
1  		<---> nList.size()
1  		<---> arr.length
arr[0]: 吃货

**注意:**第一行的值里面有 反斜杠+引号 的写法是为了JSON.parse(text)的参数要求。
这种形式(jsonObject + ArrayList)的json看起来有点怪异,解析时候才了解到阿里巴巴的jar包,估计一般不会这么用吧!
####方法二:
这种方法就方便多了。
下面就写一个测试类!

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class stringToList
{
public static void main(String[] args) throws JSONException
{

/*-----------构建json---------------*/
JSONObject job = new JSONObject();
JSONArray jsonArray = new JSONArray();

for (int i = 5; i < 9; i++)
{
jsonArray.put("吃货" + i);
}
job.put("names", jsonArray);

String str = job.toString();
System.out.println("新建JSON:" + str);

/*-----------解析json---------------*/
JSONObject json = new JSONObject(str);
JSONArray ja = json.getJSONArray("names");

System.out.println("names Value:" + ja.toString());
for (int x = 0; x < ja.length(); x++)
{
System.out.println(x + 1 + ":  " + ja.getString(x));
}
}
}

新建JSON:{"names":["吃货5","吃货6","吃货7","吃货8"]}
names Value:["吃货5","吃货6","吃货7","吃货8"]
1:  吃货5
2:  吃货6
3:  吃货7
4:  吃货8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java