第一个方法,强制转换:
Object s = JSONArray.parseArray();
for(List<List<Double>> l:(List<List<List<Double>>>)s){
for(List<Double> l1:l){
System.out.println(l1.get(0));
第二种方法 利用Gson
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<ArrayList<ArrayList<Double>>>>(){}.getType();
ArrayList<ArrayList<ArrayList<Double>>> a = gson.fromJson(s), type);
Double c = a.get(0).get(0).get(0);
第三个最简单的:
String s = jedis.hget();
JSONArray lis = JSONArray.parseArray(s);
System.out.println(((JSONArray)lis.get(0)).get(0));
今天碰到一个问题,记录一下需要解析json字符串数组中的数组中的数组,三层嵌套[ [ [1,2], [2,3] ] ]第一个方法,强制转换: Object s = JSONArray.parseArray(); for(List<List<Double>> l:(List<List<List<Double>>>)s){ for(List<Double> l1:l){ .
public static void main(String[] args) {
String str="{ \"head\":{\"snd_time\":\"20151020234832\",\"snder\":\"S\"} ,\"body\":{\"app_id\":\"APP002\",\"records\":[{\"excp_stat\":\"0\",\"fields\":[{\"req_time\":\"20140828000312\",\"tran_date\":\"121226\"}]}]} }";
System.out.println(str);
/*普通数据生成json数组*/
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray1 = JSONArray.fromObject( boolArray );
System.out.println( jsonArray1 );
// prints [true,false,true]
/*List生成json数组*/
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
System.out.println( jsonArray2 );
// prints ["first","second"]
/*String生成json数组*/
JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" );
System.out.println( jsonArray3 );
// prints ["json","is","easy"]
/*Map生成json*/
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("name", "Ren");
map.put("sex", "man");
map.put("age", 24);
JSONObject obj = JSONObject.fromObject(map);
System.out.println(obj);
//输出结果{"sex":"man","age":24,"name":"Ren"}
/*嵌套生成json*/
JSONArray jsonArr = new JSONArray();
JSONObject jsonObj = new JSONObject();
for (int i = 1; i <= 3; i++) {
JSONObject tjo = new JSONObject();
tjo.put("optValue", i+"");
tjo.put("optText", i+"Text");
jsonArr.add(tjo);
jsonObj.put("options", jsonArr);
System.out.println(jsonObj);
//输出结果 {"options":[{"optValue":"1","optText":"1Text"},{"optValue":"2","optText":"2Text"},{"optValue":"3","optText":"3Text"}]}
/*嵌套生成json*/
JSONObject tobj = new JSONObject();
JSONArray tarr = new JSONArray();
tobj.put("name", "zhangsan");
tobj.put("age", 29);
tarr.add(tobj);
tarr.add(obj);
System.out.println(tarr);
//[{"name":"zhangsan","age":29},{"sex":"man","age":24,"name":"Ren"}]
tobj.put("other", tarr);
System.out.println(tobj);
//输出结果 {"name":"zhangsan","age":29,"123":[{"name":"zhangsan","age":29},{"sex":"man","age":24,"name":"Ren"}]}
/*json的遍历(单层)*/
String jsonString = tobj.toString();
JSONObject jsonObject = JSONObject.fromObject(str);
Iterator keyIter = jsonObject.keys();
while( keyIter.hasNext()) {
String key = (String)keyIter.next();
Object value = jsonObject.get(key);
System.out.println(key + "--==" + value);
/*测试递归遍历json(多层)*/
System.out.println("---------------------------------------------------------");
getJsonValue(str);
* 递归遍历json所有子条目
public static String getJsonValue(String json) {
if(!json.contains("{") && !json.contains("[") && json.contains(":")) {
return json;
} else if(json.equals("")){
return json;
} else if(json.trim().charAt(0) == '{'){
String value = null;
JSONObject jsonObject = JSONObject.fromObject(json);
Iterator keyIter = jsonObject.keys();
while( keyIter.hasNext()) {
String key = (String)keyIter.next();
value = jsonObject.get(key).toString();
getJsonValue(value);
if(!value.contains("{") && !value.contains("[")) {
System.out.println(key + " = " + value);
return value;
} else if(json.trim().charAt(0) == '[') {
String value = null;
JSONArray jsonArr = JSONArray.fromObject(json);
for (int i = 0; i < jsonArr.size(); i++) {
value = jsonArr.getJSONObject(i).toString();
getJsonValue(value);
if(!value.contains("{") && !value.contains("[")) {
System.out.println("----"+value);
return value;
} else {
return "error";
Hive嵌套JSON Arrray UDF
此UDF接收“ JSON字符串”和JSON数组的路径,并收集此路径指定的所有元素(也处理嵌套的JSON数组)。
假设此JSON在某些表的行中:
" request " : {
" user " : " Mario " ,
" location " : " His house. " ,
" siblings " : [ " Luigi " ],
" countries " : [
" name " : " USA " ,
" regions " : [ " California " , " New York " , " Washington " ]
" name " : " Japan " ,
" regions " : [ " Tokyo " ,
JSONArray.parseArray()方法
将List转换为JSONArray T为实体类
List<T> list = new ArrayList<T>();
JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
JSONArray转List RequestDTO为实体类
JSONArray array = new JSONArray();
List<RequestDTO> lis
这个问题在之前做项目时碰到过一次,当时按照网上的做法,去掉JSON.parse()这一层转换后就没有这个报错了,数据也能正常使用,就没多想,也没深究是什么原因。
可是这次又碰到了,所以这次必须要弄明白原因。
报错的原因
因为你要转换的数据本来就是object,JSON.parse()这个方法是把一个字符串解析出json对象,你再转换就会报错;
为什么会有这样的错误
因为把Object作为参数传到...
阿里巴巴的 FastJSON 库提供了 `JSONArray` 类型,可以用于解析 JSON 数组。以下是如何使用 `JSONArray` 类型解析 JSON 数组:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
public class JsonParser {
public static void main(String[] args) {
String jsonString = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Mary\", \"age\":25}]";
JSONArray jsonArray = JSON.parseArray(jsonString);
for (int i = 0; i < jsonArray.size(); i++) {
String name = jsonArray.getJSONObject(i).getString("name");
int age = jsonArray.getJSONObject(i).getIntValue("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
在上面的代码中,我们定义了一个 JSON 数组,使用 `parseArray` 方法将其解析为 `JSONArray` 对象。然后,使用 `getJSONObject` 方法获取数组中的每一个元素,再通过该元素的键来获取对应的值。
需要注意的是,在获取 JSON 数组中的元素时,要使用 `getJSONObject` 方法获取 JSONObject 对象,再通过该对象来获取对应的值。如果直接使用 `getString` 或 `getIntValue` 方法,会抛出异常。
如果 JSON 字符串中有嵌套的 JSON 数组,可以使用 `getJSONArray` 方法来获取:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JsonParser {
public static void main(String[] args) {
String jsonString = "{\"name\":\"John\", \"age\":30, \"friends\":[{\"name\":\"Mary\", \"age\":25}, {\"name\":\"Tom\", \"age\":35}]}";
JSONObject jsonObject = JSON.parseObject(jsonString);
JSONArray friends = jsonObject.getJSONArray("friends");
for (int i = 0; i < friends.size(); i++) {
String name = friends.getJSONObject(i).getString("name");
int age = friends.getJSONObject(i).getIntValue("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
在上面的代码中,我们定义了一个 JSON 字符串,其中有一个名为 `friends` 的 JSON 数组。使用 `getJSONArray` 方法获取该数组,然后可以按照上面的方法访问数组中的元素。
python openpyxl ValueError: Value does not match pattern ^[$]?([A-Za-z]{1,3})[$]?(\d+)(:[$]?
嘿,靓仔。:
python openpyxl 处理Excel 动态插入行、列
m0_71096932: