unity 解析{"isshow":true,"is":11,"show":“22”}isshow,is,show未知将其直接存储在一个字典中
时间: 2023-07-07 15:43:08 浏览: 148
在 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 的值。
阅读全文
相关推荐


















