[英]How do I properly deserialize json data?
因此,我一直在瀏覽此示例,以嘗試首次對https://www.newtonsoft.com/json/help/html/DeserializeObject.htm進行反序列化。我試圖從json數據中創建對象,然后獲取相應的屬性。
恩..我說錯了
Newtonsoft.Json.JsonSerializationException:'無法將當前JSON數組(例如[1,2,3])反序列化為類型'json_deserializing.OppedAccounts',因為該類型需要一個JSON對象(例如{“ name”:“ value”})正確反序列化。 要解決此錯誤,可以將JSON更改為JSON對象(例如{“ name”:“ value”}),也可以將反序列化類型更改為數組,或者將實現集合接口的類型(例如ICollection,IList)更改為List,例如List從JSON數組反序列化。 還可以將JsonArrayAttribute添加到類型中,以強制其從JSON數組反序列化。 路徑'',第1行,位置1.'
我是json和反序列化的新手,所以我不確定這里發生了什么。 我的問題是,如何以適當的方式反序列化json? 我讀了一些有關列表和東西的東西,但我無法說明問題。
[
{
"uuid": "98e99e7a-df48-4b8b-adc9-e65c32410247",
"name": "UsernameOne",
"level": 4,
"bypassesPlayerLimit": false
},
{
"uuid": "b87e1cbc-c67c-4026-a359-8652ad9de8b4",
"name": "UsernameTwo",
"level": 4,
"bypassesPlayerLimit": false
}
]
CSharp代碼
public partial class MainWindow : Window
{
public string line = null;
public MainWindow()
{
InitializeComponent();
Deserialize();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if(line != null)
{
OppedAccounts account = JsonConvert.DeserializeObject<OppedAccounts>(line);
Debug.Print(account.name);
}
}
private void Deserialize()
{
using (StreamReader sr = new StreamReader("ops.json"))
{
line = sr.ReadToEnd();
}
tbjson.AppendText(line);
}
}
和班級
class OppedAccounts
{
public string uuid { get; set; }
public string name { get; set; }
public int level { get; set; }
public bool bypassplayerlimit { get; set; }
}
您正在反序列化一個數組,所以您期望返回一個對象數組。 將account
類型和JsonConvert.DeserializeObject
的通用參數JsonConvert.DeserializeObject
為List<OppedAccounts>
。
List<OppedAccounts> accounts = JsonConvert.DeserializeObject<List<OppedAccounts>>(line);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.