草样年华--跑掉的青春

博客园 首页 新随笔 联系 订阅 管理

验证Json格式可以进入 http://json.cn/ 

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,必须是String类型,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

example:

 1 {
 2     "animals": {
 3         "dog": [
 4             {
 5                 "name": "Rufus",
 6                 "age":15
 7             },
 8             {
 9                 "name": "Marty",
10                 "age": null
11             }
12         ]
13 }

经过对象、数组2种结构就可以组合成复杂的数据结构了。

JSON具有以下这些形式

1、对象(object)

  对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

  example{"key1":"value1" ,

            "key2":"value2" ,

            "key3":"value3"}

2、数组(array):数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
   2.1 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。

  example:[2,6,8]   ["str1","str2","str3","str4"] 


这些结构可以嵌套,字符串(string) 是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。JSON的字符串(string)与C或者Java的字符串非常相似。数值(number) 也与C或者Java的数值非常相似。只是JSON的数值没有使用八进制与十六进制格式。
同时,可以在任意标记之间添加空白。

 

Json格式转java对象步骤

1、获取Json格式的字符串;

2、将字符串转换为Json对象

3、将Json对象转换成java对象

 

场景1:Json格式的字符串[28,36,37],这是一个Json格式的数值数组

1 String buIdSettings = LionConfigUtils.getProperty("tp-audit-admin-mq.splitedBU");
2 JSONArray jsonarray = JSONArray.fromObject(buIdSettings);
3 List<Integer> buIdList = jsonarray.toList(jsonarray);

 

场景2: Json格式的字符串{"28":"36,37"},这是Json格式的对象

1 import com.alibaba.fastjson.JSONObject;
2 lion配置:{"28":"36,37"}
3 JSONObject jsonBUIds= JSON.parseObject(Json格式字符串);
4 String BUIds = (String)jsonBUIds.get("28");
5 String[] splitedBUIdsStrArr = BUIds.split(",");
6 List<Integer> buIdsList = new ArrayList<Integer>();
7 for (int i=0;i<splitedBUIdsStrArr.length;i++){
8     buIdsList.add(Integer.valueOf(splitedBUIdsStrArr[i]));
9 }

 

场景3:Json转数组:

[
{
"value": "Risk",
"text": "风控",
"permissionId":50025
},
{
"value": "Qualification",
"text": "品控",
"permissionId":50037
},
{
"value": "Ad",
"text": "推广",
"permissionId":50637
}
]

以上字符串是一个数组,数组的组成元素是对象


import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

1 String ruleCategories = LionConfigUtils.getProperty("gb-rule-service.ruleCategories");
2 JSONArray array = JSONArray.fromObject(ruleCategories);
3 for(int i = 0; i < array.size(); i++) {
4     JSONObject object = array.getJSONObject(i);
5     final String categoryName = (String)object.get("value");
6 }

场景4:json转java Map

{
"高频操作":"MTAHomeHighFrequencyModule",
"经营数据":"MTAHomeDataModule",
"功能入口":"MTAHomeFunctionEntryModule",
"经营建议":"MTAHomeSuggestionModule",
"顾客营销":"MTAHomeCustomerGuidedModule",
"抢占稀缺活动位":"MTAHomeSeizeMarketModule",
"成功案例":"MTAHomeSuccessCaseModule"
}

以上字符是一个JSON对象,对象中有多个属性

 1 import net.sf.json.JSONObject;
 2 
 3         String moduleListStr = "上面的json字符串";
 4         if(StringUtils.isEmpty(moduleListStr)){
 5             return null;
 6         }
 7         List<String> moduleList = new ArrayList<String>();
 8         Map<String,String> mapJson = JSONObject.fromObject(moduleListStr);
 9         for(Map.Entry<String,String> entry : mapJson.entrySet()){
10             moduleList.add(entry.getValue());
11         }

上面的代码将Json对象转化成一个java Map,然后进一步操作

posted on 2016-08-25 18:03  草样年华--跑掉的青春  阅读(322)  评论(0)    收藏  举报