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