本文目錄一覽:
如何把json數組轉為java數組
有兩種方法實現:
(1)直接轉換:
創建JSONArray對象、JSONObject對象,通過put方法將其數據以鍵值對的形式填充,如例:
//假如有一個Java實體類Person,包括以下屬性:phone、sex、married、address。
ArrayListPerson persons = new ArrayListPerson();
for (int i = 0; i 3; i++) {
persons.add(new Person(“138******67”, “女”, true, “北京朝陽區”));//填充Java實體類集合
}
JSONArray array = new JSONArray();// Json格式的數組形式
JSONObject obj;//json格式的單個對象形式
for (int i = 0; i persons.size(); i++) {
obj = new JSONObject();
//依次填充每一個Java實體對象
try {
obj.put(“phone”, persons.get(i).getPhone());//json通過put方式以key-value形式填充
obj.put(“sex”, persons.get(i).getSex());
obj.put(“married”, persons.get(i).getMarried());
obj.put(“address”, persons.get(i).getAddress());
array.put(obj);//將JSONObject添加入JSONArray
} catch (JSONException e) {
e.printStackTrace();
}
}
(2)通過GSON工具實現:
只需要創建GSON對象,通過toJson方法轉換即可。如例:
//模擬Java數據
Person person = new Person(“敏敏”, 23, “女”, “北京市海淀區”);
//創建GSON對象
Gson gson = new Gson();
//調用toJson方法即可轉換為字元串的json格式
String json = gson.toJson(person);
json數組轉java對象怎麼轉?
1、需要json的相關jar包
2、設置json格式字元串:
String str=”{\”student\”:[{\”name\”:\”leilei\”,\”age\”:23},{\”name\”:\”leilei02\”,\”age\”:23}]}”;
3、建立相應的類:
public class StudentList {
ListStudent student;
public ListStudent getStudent() {
return student;
}
public void setStudent(ListStudent student) {
this.student = student;
}
}
public class Student {
private String name;
private int age;
//private StudentClass studentClass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4、測試程序
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;
public class JsonToJavaBean {
public static void main(String[] args) {
String str=”{\”student\”:[{\”name\”:\”leilei\”,\”age\”:23},{\”name\”:\”leilei02\”,\”age\”:23}]}”;
Student stu = null;
ListStudent list = null;
try {
ObjectMapper objectMapper=new ObjectMapper();
StudentList studentList=objectMapper.readValue(str, StudentList.class);
list=studentList.getStudent();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(Student s:list){
System.out.println(s.getName());
}
}
有沒有將json直接轉換生成Java類的工具軟體
使用Jackson可以將json轉為Java對象,同樣也可以將java對象轉為json字元串,並且Spring框架內部也是使用的此jar。
實例:將json轉為java對象
/*
下面的id,name,age同是User實體類的屬性
*/
// 將json轉為Java對象
String json = “{\”id\”:1,\”name\”:\”張三\”,\”age\”:18}”;
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);、
// 將json轉為Java數組對象
String json = “[{\”id\”:1,\”name\”:\”張三\”,\”age\”:18},{\”id\”:2,\”name\”:\”李四\”,\”age\”:18},{\”id\”:3,\”name\”:\”王五\”,\”age\”:18}]”;
ObjectMapper mapper = new ObjectMapper();
User[] users = mapper.readValue(json, User[].class);
json格式的字元串轉換為java對象
先來解釋反斜杠幹嘛用的:
你既然提到了是json字元串,對,請注意字元串三個字。什麼是字元串?兩個引號之間的就是一個字元串比如:”abcdefg”這就是字元串.
假如我有個json對象:
{
“message” : “success”
}
那麼問題來了,怎麼把它放到一個String字元串對象里呢?
那麼我們都會這麼做:
String json = “{“message”:”success”}”;
對吧?但是這麼做對嗎?前面說過了,字元串是引號開始,引號結尾的,再看一眼這麼做對嗎?
所以我們需要轉義字元去將引號放入字元串當中,而不是字元串定義的功能。「 \” 」就是表示將雙引號放入字元串中。
2. json字元串轉java對象
下面以ali的fastjson為例,講解json字元串轉json對象:
String jsonStr = “{\”message\” : \”success\”}”;
JSONObject jsonObject = JSON.parseObject(jsonStr);
String message = jsonObject.getString(“message”);
System.out.println(message);
假如你有想要轉換成的bean :
public class Info {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
就可以這樣:
String jsonStr = “{\”message\” : \”success\”}”;
Info info = JSON.parseObject(jsonStr, Info.class);
System.out.println(info.getMessage());
這裡的fastjson只是處理json的框架中的一個,此外還有jackson、Gson等等,可以根據自己的需求選擇一個就可以了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279897.html