私はこの例を見ていたことがあります。https://www.newtonsoft.com/json/help/html/DeserializeObject.htm jsonデータからオブジェクトを作成し、対応するプロパティを取得しようとしています。jsonデータを正しくデシリアライズするにはどうすればよいですか?
、よく..私はこの
Newtonsoft.Json.JsonSerializationExceptionを言ってエラーを得た:json_deserializing 'タイプ に 現在のJSON配列を(例えば、[1,2,3])デシリアライズすることはできません'。型がJSON オブジェクト(たとえば、{"name": "value"})を正しく必要としないため、「OppedAccounts」が正しくデシリアライズされません。 エラーを修正するには、JSONオブジェクトをJSONオブジェクト(例:{"name": "value"}) に変更するか、またはデシリアライズされたタイプを配列または コレクションインターフェイス(ICollection、IListなど)を実装するタイプに変更します。 をJSON配列から逆シリアル化できるリスト。 JSON配列から強制的に非直列化するために、JsonArrayAttributeを型に追加した にすることもできます。パス ''、行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; }
}
'リストアカウント= JsonConvert.DeserializeObject <リスト>(ライン); [?C#の動的オブジェクトにデシリアライズJSON]の' –
可能な重複(https://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object) – xxbbcc