2017-08-28 19 views
1

我是統一新手,我需要從JSON下載數據。我成功下載了JSON數據,但我無法解析JSON。我使用Boomlagoon Asset來序列化我的JSON。這是我的代碼。如何解析統一C#中的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數據。 在此先感謝。

+0

粘貼你的json [here](http://json2csharp.com/)可以輕鬆生成正確的類。看到如何做序列化/反序列化json的副本。 – Programmer

+0

此問題被標記爲現有問題的**確切**副本。我不會說這是「確切的」。 @Programmer,答案也是不同的。不要程序員是誰,但絕對不應該如此武斷。 – David

+0

@David它是一個重複的問題,因爲它提出了有關解序列化json數據的問題,但OP不必刪除它,因爲它將在未來幫助人們。請不要回答重複的問題。將它們標記爲重複項。 OP可能還沒有聽說過'JsonUtility'。唯一推薦'JSONObject'的時候是json以數字值開頭的時候。 – Programmer

回答

-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。

+0

哈哈在downvoter。 – David

-2
  • 從NuGet包管理器添加Newtonsoft.Json到您的解決方案。
  • 添加引用服務器端統一文件

  • 內系列化你的列表,如:JsonConvert.SerializeObject(你的對象);

  • 在客戶端

    這樣做:JSON.Parse(您的結果)