需要寫一個方法,把json數(shù)據(jù)轉(zhuǎn)換成list集合數(shù)據(jù)

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)澄江免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
public static List jsonToBean(String data, Object bean) {
List list = new ArrayList();
try {
JSONArray array;
try {
array = new JSONArray(data);
for (int i = 0; i array.length(); i++) {
Object toBean = getBean(bean);
JSONObject ob = new JSONObject();
ob = (JSONObject) array.get(i);
toBean = jsonStrToBean(ob, toBean);
list.add(toBean);
}
return list;
} catch (JSONException e) {
try {
Object obj = null;
JSONObject jsonObj = new JSONObject(data);
Object toBean = getBean(bean);
toBean = jsonStrToBean(jsonObj, toBean);
list.add(toBean);
return list;
} catch (JSONException e1) {
log.error("Error covert String to JSONObject", e);
e1.printStackTrace();
}
e.printStackTrace();
log.error("Error covert String to JSONArray", e);
}
} catch (SecurityException e) {
e.printStackTrace();
}
return list;
}
main(){
int a,b=322;
float x,y=8.88;
char c1='k',c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
}
本例表明了上述賦值運算中類型轉(zhuǎn)換的規(guī)則。a為整型,賦予實型量y值8.88后只取整數(shù)8。x為實型,賦予整型量b值322, 后增加了小數(shù)部分。字符型量c1賦予a變?yōu)檎停土縝賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進制66,按ASCII碼對應于字符B)。
3. 復合的賦值運算符
在賦值符“=”之前加上其它二目運算符可構成復合賦值符。如+=,-=,*=,/=,%=,=,=,=,^=,|=。
json格式可以算我們?nèi)粘W畛S玫男蛄谢袷街涣耍珿o語言作為一個由Google開發(fā),號稱互聯(lián)網(wǎng)的C語言的語言,自然也對JSON格式支持很好。官方提供的Json解析包已經(jīng)非常強大,我們接下來講解Json的序列化與反序列化操作。另外還有一些第三方的Json解析庫,也能夠高效的操作Json對象,比如simplejson,ffjson等。下面是兩個比較重要的函數(shù):
? Json Marshal:將數(shù)據(jù)編碼成json字符串
Marshal 用于將struct對象序列化到json對象中。v是interface{}類型,任何類型都實現(xiàn)了空接口。
1:tag中的第一個參數(shù)是用來指定別名,比如Name 指定別名為 username `json:"username"`
2:如果不想指定別名但是想指定其他參數(shù)用逗號來分隔,omitempty 指定到一個field時,如果在賦值時對該屬性未賦值或者對該屬性賦值為 zero value,那么將Person序列化成json時會忽略該字段
3:- 指定到一個field時,無論有沒有值,將Person序列化成json時都會忽略該字段
4:string 指定到一個field時,比如Person中的Count為int類型 如果沒有任何指定在序列化到json之后也是int 比如這個樣子 “Count”:0,但是如果指定了string之后序列化之后也是string類型的,那么就是這個樣子"Count":"0"
? struct序列化為Json
? slice序列化為Json
? map 序列化為Json
? Json Unmarshal:將json字符串解碼到相應的數(shù)據(jù)結(jié)構,Unmarshal的第一個參數(shù)是[]byte,第二個參數(shù)是接受json解析的數(shù)據(jù)結(jié)構。
下面我們依次講解Json的操作。
1:將Json序列化進入結(jié)構體
2::將Json序列化到結(jié)構體slice
3:將Json序列化進Map
4:將Json序列化進Slice
并列的數(shù)據(jù)之間用逗號(”, “)分隔。
映射用冒號(”: “)表示。
并列數(shù)據(jù)的集合(數(shù)組)用方括號(“[]“)表示。
映射的集合(對象)用大括號(”{}”)表示。
上面四條規(guī)則,就是Json格式的所有內(nèi)容。
例:
var?json?=?{
"name":"Tom"????"age":24????"hobby":[sleep,?read,?music]????"other":{????????"other1":1,????????"other2":2,????????"other3":[{????????"other4":4????????"other5":5????????},????????{????????"other6":6,????????"other7":7????????}]????}}
這個去掉外面的“”就是數(shù)組,數(shù)組里面就一個元素是json對象的元素,然后json對象里面的第三個又是數(shù)組!
有兩種方法實現(xiàn):
(1)直接轉(zhuǎn)換:
創(chuàng)建JSONArray對象、JSONObject對象,通過put方法將其數(shù)據(jù)以鍵值對的形式填充,如例:
//假如有一個Java實體類Person,包括以下屬性:phone、sex、married、address。
ArrayListPerson persons = new ArrayListPerson();
for (int i = 0; i 3; i++) {
persons.add(new Person("138******67", "女", true, "北京朝陽區(qū)"));//填充Java實體類集合
}
JSONArray array = new JSONArray();// Json格式的數(shù)組形式
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工具實現(xiàn):
只需要創(chuàng)建GSON對象,通過toJson方法轉(zhuǎn)換即可。如例:
//模擬Java數(shù)據(jù)
Person person = new Person("敏敏", 23, "女", "北京市海淀區(qū)");
//創(chuàng)建GSON對象
Gson gson = new Gson();
//調(diào)用toJson方法即可轉(zhuǎn)換為字符串的json格式
String json = gson.toJson(person);
新聞標題:go語言json對象數(shù)組,go解析json數(shù)組
路徑分享:http://chinadenli.net/article14/dsshdge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站導航、品牌網(wǎng)站建設、軟件開發(fā)、網(wǎng)站營銷、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)