簡體   English   中英

unity C#-如何獲取列表的值<object>

[英]unity c# - how to get values of list<object>

我有這個json:

 [ [ [ "Tel Aviv", "Beersheba", "Jerusalem", "Haifa" ] ], [ { "City": "Tel Aviv" }, { "City": "Beersheba" }, { "City": "Jerusalem" }, { "City": "Haifa" }, { "City": "Jerusalem" }, { "City": "Tel Aviv" }, { "City": "Haifa" }, { "City": "Beersheba" }, { "City": "Jerusalem" }, { "City": "Jerusalem" }, { "City": "Haifa" }, { "City": "Tel Aviv" }, { "City": "Tel Aviv" }, { "City": "Beersheba" } ] ] 

我將其轉換為列表:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft;
string jsonStr = "<json string from above>";
List<object> data;
private void Start()
{
    data = Newtonsoft.Json.JsonConvert.DeserializeObject<List<object>>(jsonStr);
    Debug.Log(data[0,0]);
}

但是,當調試器到達“ Debug.Log(data [0,0]);”時, 它打印:

嚴重性代碼說明項目文件行抑制狀態錯誤CS0021無法將帶有[]的索引應用於類型'object'的表達式Assembly-CSharp C:\\ Users \\ cdi2 \\ Downloads \\ mdClone-20180627T083334Z-001 \\ mdClone \\ Assets \\ CreateTable.cs 31活性

您的字符串在List<object>反序列化。 List<object>只能使用一維索引。
因此,反序列化僅創建兩個JArray類型的對象。
第一個是四個城市,第二個是14個城市。

您可以使用以下方法獲取第一個對象的第一個元素

Console.WriteLine((data[0] as JArray)[0][0]);

同時,如果您想到達第二個JArray中的任何元素,則可以使用以下語法

Console.WriteLine((data[1] as JArray)[1]["City"]);   // Beersheba

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM