Ⅰ 如何從JSON數據創建java類
1、「名稱/值」對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。 如:
{
「name」:」jackson」,
「age」:100
}
2、值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)如:
{
「students」:
[
{「name」:」jackson」,「age」:100},
{「name」:」michael」,」age」:51}
]
}
補充:json是做交換格式,查詢效率非常低,如果做存儲的檢索格式就誤用了。
就是說「聊天信息的保存用json應該可以吧」還不如你之前的mysql資料庫。
json用在客戶端往服務端發送的通訊交換數據的格式上。服務端收到後轉為資料庫中或內存中存放。
Ⅱ 有關restful 怎麼把json對象直接映射成java對象
利用一些jar包對json解析即可。這里推薦兩個:
1、fastjson,阿里巴巴開源的json解析包。
使用方便,速度較快,下面的代碼可以很快的解析JSON得到Java對象:
JSONObjectjo=JSONObject.parseObject(json);
2、jackson,國外開源的json解析包,也很流行。
其最大的特點是支持流模式的JSON數據解析,這樣在解析較大的json數據時很有優勢。
JsonTokenresult=null;
inti=1;
while((result=p.nextToken())!=null){
System.out.println("["+i+++"]"+result);//根據result類型進行處理
}
Ⅲ 怎樣把JSON對象快速的轉成java對象
用阿里開源的fastjson
Ⅳ 如何把json數組轉為java數組
有兩種方法實現:
(1)直接轉換:
創建JSONArray對象、JSONObject對象,通過put方法將其數據以鍵值對的形式填充,如例:
//假如有一個Java實體類Person,包括以下屬性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();
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、可藉助開源組件FastJson或者Jackson。
2、自己動手
a、使用反射獲取對象所有的setter方法以及對於所需的參數類型用map對應
b、循環上訴集合,依次使用反射調用set方法,並使用正則匹配json串中的值,可以使用class.getDeclareFileds();獲取變數名,注意若參數是class類型需要反射為實例後填充,class類型匹配json串是也需要注意,因為可能存在嵌套對象中變數名一致的情況。展示部分代碼如下:
3、綜合分析還是建議使用中間件來進行映射。可參考Jackson示例
Ⅵ json格式的字元串轉換為java對象
先來解釋反斜杠幹嘛用的:
你既然提到了是json字元串,對,請注意字元串三個字。什麼是字元串?兩個引號之間的就是一個字元串比如:"abcdefg"這就是字元串.
假如我有個json對象:
{
"message" : "success"
}
那麼問題來了,怎麼把它放到一個String字元串對象里呢?
那麼我們都會這么做:
Stringjson="{"message":"success"}";
對吧?但是這么做對嗎?前面說過了,字元串是引號開始,引號結尾的,再看一眼這么做對嗎?
StringjsonStr="{"message":"success"}";
Infoinfo=JSON.parseObject(jsonStr,Info.class);
System.out.println(info.getMessage());
這里的fastjson只是處理json的框架中的一個,此外還有jackson、Gson等等,可以根據自己的需求選擇一個就可以了。
Ⅶ json字元串怎麼轉換為java對象
您好,鑒於此問題,我將提供您如下的解決方案:
1、首先,加入如下 jar 文件到工程中:
3、控制台輸出結果如下所示:
{"age":90,"houses":[],"id":1,"name":"liNing"}
User [age=90, houses=[], id=1, name=liiNing]
Ⅷ JSON轉為java對象
開始看網上關於json的例子程序段,實驗了一把發現結果和網上例子程序的結果不一致,後來發現使用json需要導入的jar包不全,只導入json-lib-2.2.2-jdk15.jar ,還需以下幾個包:commons-beanutils-1.7.0.jar commons-collections-3.2.jar commons-lang.jar commons-logging-1.1.jar ezmorph-1.0.4.jar 這時在測試得到了想要的結果 Question q2 = new Question(); q2.setId(2); q2.setDescription("descrsssss"); q2.setPointInfo("pointkkkk"); q2.setType(3); Question q1 = new Question(); q1.setId(1); q1.setDescription("descrsssss"); q1.setPointInfo("pointkkkk"); q1.setType(3); JSONObject jsonObject = new JSONObject().fromObject(q2); System.out.println(jsonObject); List list = new ArrayList(); list.add(q1); list.add(q2); JSONArray jsonArr= JSONArray.fromObject(list); System.out.println(jsonArr); 輸出:{"description":"descrsssss","id":2,"pointInfo":"pointkkkk","type":3} [{"description":"descrsssss","id":1,"pointInfo":"pointkkkk","type":3},{"description":"descrsssss","id":2,"pointInfo":"pointkkkk","type":3}]頁面 $.post("showQuestions?type="+type,null,callbackShowQuestions,"json"); 這時在回調函數的參數data獲得的就是json轉換後的js對象數組, 以下標方式便可訪問數組里的相應對象信息。
Ⅸ 有沒有將json直接轉換生成Java類的工具軟體
使用Jackson可以將json轉為Java對象,同樣也可以將java對象轉為json字元串,並且Spring框架內部也是使用的此jar。
實例:將json轉為java對象
/*
下面的id,name,age同是User實體類的屬性
*/
//將json轉為Java對象
Stringjson="{"id":1,"name":"張三","age":18}";
ObjectMappermapper=newObjectMapper();
Useruser=mapper.readValue(json,User.class);、
//將json轉為Java數組對象
Stringjson="[{"id":1,"name":"張三","age":18},{"id":2,"name":"李四","age":18},{"id":3,"name":"王五","age":18}]";
ObjectMappermapper=newObjectMapper();
User[]users=mapper.readValue(json,User[].class);