如何在统一 C# 中解析来自 JSON 的数据? [复制]
Posted
技术标签:
【中文标题】如何在统一 C# 中解析来自 JSON 的数据? [复制]【英文标题】:How to parse Data from JSON in unity C#? [duplicate] 【发布时间】:2017-08-28 09:53:04 【问题描述】:我是 Unity 新手,我需要从 JSON 下载数据。我成功下载了 JSON 数据,但无法解析 JSON。我已经使用 Boomlagoon Asset 来序列化我的 JSON。这是我的代码。
void Start()
string url = "http://www.windmillinfotech.com/carlife/carlife_api/get_workshop";
WWWForm form = new WWWForm();
form.AddField("district", "Dhaka");
form.AddField("thana", "Mirpur");
form.AddField("service_type", "car");
WWW www = new WWW( url, form );
StartCoroutine (request(www));
IEnumerator request (WWW www)
yield return www;
if(!string.IsNullOrEmpty(www.error))
print( "Error : " + www.error );
else
string serviceData = www.text;
JSONObject json = JSONObject.Parse(serviceData);
print ("\n\n\n\n"+json["workshop_dtls_result"]);
我的 JSON 结果如下,
"success": true,
"workshop_dtls_result": [
"id": "141",
"user_id": "",
"store_id": null,
"updated_by": null,
"workshop_name": "Okay Auto Engineering",
"workshop_email": "",
"workshop_address": "Section -10, Block - A, Plot - 9, Main Road, Mirpur, Dhaka-1216. Behind the graveyard, 01712978222",
"district": "Dhaka",
"thana": "Mirpur",
"post_code": "",
"contact_person": "Sabir Hossain",
"contact_number": "01712978222",
"alternative_number": "",
"service_type_car": "Car",
"service_type_bus": "",
"service_type_bike": "",
"workshop_photo_1": "",
"workshop_photo_2": "",
"workshop_photo_3": "",
"latitude": "",
"longitude": "",
"create_date": "2017-01-01",
"active_status": "Active",
"workshop_services": null,
"lubricants_available": "No",
"lubricant_products": null
,
"id": "142",
"user_id": "",
"store_id": null,
"updated_by": null,
"workshop_name": "Ali Automobile ",
"workshop_email": "",
"workshop_address": "Section -11, Block- D, Avenue-1 Plot-14, Mob: 01925920115",
"district": "Dhaka",
"thana": "Mirpur",
"post_code": "",
"contact_person": "Mohammad Ali",
"contact_number": "01925920115",
"alternative_number": "",
"service_type_car": "Car",
"service_type_bus": "",
"service_type_bike": "",
"workshop_photo_1": "",
"workshop_photo_2": "",
"workshop_photo_3": "",
"latitude": "",
"longitude": "",
"create_date": "2017-01-01",
"active_status": "Active",
"workshop_services": null,
"lubricants_available": "No",
"lubricant_products": null
]
现在我的问题是如何获取 id、workshop_name 等的每个值?请帮我解析这个 JSON 数据。 提前致谢。
【问题讨论】:
粘贴您的 json here 以轻松生成正确的类。请参阅副本以了解如何使用它对 json 进行序列化/反序列化。 此问题被标记为与现有问题的完全重复。我不会对此说“完全”。 @Programmer,答案也不同。别说程序员是谁,但绝对不能这么武断。 @David 这是重复的,因为它询问反序列化 json 数据,但 OP 不必删除它,因为它将在未来帮助人们。请不要回答重复的问题。而是将它们标记为重复项。 OP 可能还没有听说过JsonUtility
。唯一推荐JSONObject
的时候是json以数值开头的时候。
【参考方案1】:
请参考以下代码:
using SimpleJSON;
var N = JSON.Parse(the_JSON_string);
var versionString = N["version"].Value; // versionString will be a string containing "1.0"
var versionNumber = N["version"].AsFloat; // versionNumber will be a
float containing 1.0
var name = N["data"]["sampleArray"][2]["name"];// name will be a string containing "sub object"
这里的JSON字符串(the_JSON_string)如下:
"version": "1.0",
"data":
"sampleArray": [
"string value",
5,
"name": "sub object"
]
请注意,根据我们的经验,SimpleJson 适用于 Android 和 iOS,而 NewtonSoft 确实不适用于某些 ios 设备。如果您的应用是移动应用,则不应使用 NewtonJson。
【讨论】:
对投票者不屑一顾。【参考方案2】: 将 Newtonsoft.Json 从 nuGet 包管理器添加到您的解决方案。 在统一文件中添加引用在服务器端序列化您的列表,如:JsonConvert.SerializeObject(your object);
在客户端这样做:JSON.Parse(your result)
【讨论】:
以上是关于如何在统一 C# 中解析来自 JSON 的数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
解析来自 StreamBuilder C# 的 JSON 响应
如何在 Swift 3 中解析来自 URL 的 JSON 数据
C# 中 JSON 格式字符串(来自 REST API)的值