JSON.parseObject的用法

本文详细介绍了如何使用FastJson进行JSON格式字符串的解析,包括将JSON转换为JSONObject、JSONArray,以及如何遍历和获取对象属性。通过四个具体的示例,展示了FastJson在处理不同结构JSON数据时的方法和步骤,帮助开发者更好地理解和应用FastJson。
摘要由CSDN通过智能技术生成

fastJson对于json格式字符串的解析主要用到了一下三个类:

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码。

同样我们可以把JSONArray当做一个List<Object>,可以把JSONArray看成JSONObject对象的一个集合。

1.result格式一:

{
    "studentName":"true",
    "studentAge":"123" 
}
JSONObject jsonObject=JSON.parseObject(result);      //转换成object
jsonObject.getString("studentAge")    //获取object中studentAge字段;  
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));                                                     

 2.格式二:

[
  {
     "studentName":"lily",
     "studentAge":12
  },
  {
     "studentName":"lucy",
     "studentAge":15
  }
]
JSONArray jsonArray = JSON.parseArray(result);
//JSONArray jsonArray1 = JSONArray.parseArray(result);//因为JSONArray继承了JSON,所以这样也是可以的

 //遍历方式1
 int size = jsonArray.size();
 for (int i = 0; i < size; i++){
    JSONObject jsonObject2 = jsonArray.getJSONObject(i);  
 System.out.println(jsonObject2.getString("studentName")+":"+jsonObject2.getInteger("studentAge"));
        }

 //遍历方式2
   for (Object obj : jsonArray) {
   JSONObject jsonObject2 = (JSONObject) obj;   
System.out.println(jsonObject2.getString("studentName")+":"+jsonObject2.getInteger("studentAge"));
   }

3.格式三:

{
    "success":"true",
    "data":{
        "shop_uid":"123"
    }
}
JSONObject shop_user =JSON.parseObject(result);  
System.out.println(JSON.parseObject(shop_user.getString("data")).getString("shop_uid"));

 4.格式四:

{
 "teacherName":"crystall",
 "teacherAge":27,
 "course":
    {
       "courseName":"english",
       "code":1270
    },
  "students":
    [
      {
         "studentName":"lily",
         "studentAge":12
      },
      {
         "studentName":"lucy",
         "studentAge":15
      }
   ]
}
JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
 //JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的
String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students");
System.out.println(teacherName+","+teacherAge+","+course+","+students);

 

 

在 Unity 中,可以使用 JSON 解析器将 JSON 字符串解析成一个 Dictionary 对象。以下是一个示例代码: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using SimpleJSON; public class JsonParser : MonoBehaviour { void Start() { string jsonString = "{\"isshow\":true,\"is\":11,\"show\":\"22\"}"; JSONNode jsonData = JSON.Parse(jsonString); Dictionary<string, object> dataDict = new Dictionary<string, object>(); foreach (KeyValuePair<string, JSONNode> kvp in jsonData) { switch (kvp.Value.Type) { case JSONObject: // 如果是 JSON 对象,递归解析 dataDict.Add(kvp.Key, ParseJSONObject(kvp.Value)); break; case JSONArray: // 如果是 JSON 数组,递归解析 dataDict.Add(kvp.Key, ParseJSONArray(kvp.Value)); break; case JSONString: dataDict.Add(kvp.Key, kvp.Value.Value); break; case JSONNumber: dataDict.Add(kvp.Key, kvp.Value.AsDouble); break; case JSONBool: dataDict.Add(kvp.Key, kvp.Value.AsBool); break; case JSONNull: dataDict.Add(kvp.Key, null); break; } } // 输出结果 foreach (KeyValuePair<string, object> kvp in dataDict) { Debug.Log(kvp.Key + ": " + kvp.Value.ToString()); } } private Dictionary<string, object> ParseJSONObject(JSONNode node) { Dictionary<string, object> dict = new Dictionary<string, object>(); foreach (KeyValuePair<string, JSONNode> kvp in node) { switch (kvp.Value.Type) { case JSONObject: dict.Add(kvp.Key, ParseJSONObject(kvp.Value)); break; case JSONArray: dict.Add(kvp.Key, ParseJSONArray(kvp.Value)); break; case JSONString: dict.Add(kvp.Key, kvp.Value.Value); break; case JSONNumber: dict.Add(kvp.Key, kvp.Value.AsDouble); break; case JSONBool: dict.Add(kvp.Key, kvp.Value.AsBool); break; case JSONNull: dict.Add(kvp.Key, null); break; } } return dict; } private List<object> ParseJSONArray(JSONNode node) { List<object> list = new List<object>(); foreach (JSONNode childNode in node) { switch (childNode.Type) { case JSONObject: list.Add(ParseJSONObject(childNode)); break; case JSONArray: list.Add(ParseJSONArray(childNode)); break; case JSONString: list.Add(childNode.Value); break; case JSONNumber: list.Add(childNode.AsDouble); break; case JSONBool: list.Add(childNode.AsBool); break; case JSONNull: list.Add(null); break; } } return list; } } ``` 代码中首先定义了一个 JSON 字符串,然后使用 SimpleJSON 库解析成 JSONNode 对象。接着,定义了一个 ParseJSONObject 方法和一个 ParseJSONArray 方法,递归解析 JSON 数据,将其转换成 Dictionary 和 List 对象。最后,将解析后的结果输出到控制台。 在 Start 方法中,调用 ParseJSONObject 方法将 JSONNode 对象解析成 Dictionary 对象,并输出到控制台。对于给出的 JSON 数据,输出结果如下: ``` isshow: True is: 11 show: 22 ``` 其中,isshow、is 和 show 分别作为 Dictionary 的键,True、11 和 22 分别作为 Dictionary 的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值