像这种json数据怎么把里面的值取出来呢?
[{
"cname": "小明",
"age": 10
}, {
"cname": "小黑",
"age": 10
}]
想把名字提取到一个字符串数组里面,把年龄提取到int数组,怎么写?
可以使用fastjson的jsonArray来解析
JSONArray jsonArray = JSONArray.parseArray(jsonData);
String[] names = new String[jsonArray.size()];
int[] ages = new int[jsonArray.size()];
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
String cname = object.getString("cname");
int age = object.getIntValue("age");
names[i] = cname;
ages[i] = age;
}
@Test
public void test() {
String json = "[{\n" +
" \"cname\": \"小明\",\n" +
" \"age\": 10\n" +
" \n" +
"}, {\n" +
" \"cname\": \"小黑\",\n" +
" \"age\": 10\n" +
"}]\n";
List<Map<String, Object>> maps = FastJsonUtils.toMapList(json);
List<String> nameList = new ArrayList<>();
List<Integer> ageList = new ArrayList<>();
for (Map<String, Object> map : maps) {
nameList.add((String) map.get("cname"));
ageList.add((Integer) map.get("age"));
}
String[] nameArr = nameList.toArray(new String[0]);
Integer[] ageArr = ageList.toArray(new Integer[0]);
System.out.println(Arrays.toString(nameArr));
System.out.println(Arrays.toString(ageArr));
}
可以使用JSONObject和JSONArray来解析JSON数据,然后将数据存储到字符串数组和整型数组中。示例代码如下:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JsonDemo {
public static void main(String[] args) {
String jsonStr = "[{\"cname\": \"小明\",\"age\": 10}, {\"cname\": \"小黑\",\"age\": 10}]";
try {
JSONArray jsonArray = new JSONArray(jsonStr);
String[] names = new String[jsonArray.length()];
int[] ages = new int[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
names[i] = jsonObject.getString("cname");
ages[i] = jsonObject.getInt("age");
}
// 打印结果
System.out.println(Arrays.toString(names));
System.out.println(Arrays.toString(ages));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
首先使用JSONArray将JSON字符串解析成一个数组,然后定义两个数组names和ages来存储解析出来的姓名和年龄。接着,遍历JSONArray,使用JSONObject解析每一个对象,并将对应的姓名和年龄存储到数组中。最后,打印出两个数组中的内容。