ここ数日、私はJSON応答とC#オブジェクトをどのように逆シリアル化するかを研究してきました。 JSONは有効ですが、変換するためにJSONからC#コンバータを取得することはできません。私はまた、このインスタンスのために働くStackoverflowの答えを見つけることができません。 JSONレスポンスは、次のとおりです。異なるデータ型を含むJSON配列を単一のオブジェクトにデシリアライズする方法
[
{
"SEX": "Male",
"BREED": "Opifex",
"PVPRATING": 1301,
"NAME": "Kilmanagh",
"FIRSTNAME": "Big",
"PVPTITLE": "Freshman",
"LASTNAME": "Kahuna",
"CHAR_DIMENSION": 5,
"ALIENLEVEL": 30,
"RANK_name": "Vindicator",
"HEADID": 40281,
"PROFNAME": "Guru",
"LEVELX": 220,
"PROF": "Martial Artist",
"CHAR_INSTANCE": 12734,
"SIDE": "Omni"
},
{
"ORG_DIMENSION": 5,
"RANK_TITLE": "President",
"ORG_INSTANCE": 9911,
"NAME": "Elements of Destruction",
"RANK": 0
},
"2016/04/06 08:37:26"
]
私の検査から、2つのオブジェクトと文字列を含む配列です。 私はオブジェクトに変換しようとするために、以下の使用している:私はエラーを取得
resultArray = JsonConvert.DeserializeObject<List<JsonWhoisResult>>(data);
and
result = JsonConvert.DeserializeObject<JsonWhoisResult>(data);
いずれかの方法:
Error converting value ...(snip)... [ConsoleApplication6.JsonWhoisResult]'. Path '', line 1, position 536.`
私は、オブジェクトが間違っている場合は知っている場合、またはしていないが、私このJSON形式に間違ったコードを使用しています。私は以下を使用しています:
public class JsonWhoisResult
{
public stats stats { get; set; }
public header header { get; set; }
public string datetime { get; set; }
}
public class header
{
public int ORG_DIMENSION { get; set; }
public string RANK_TITLE { get; set; }
public int ORG_INSTANCE { get; set; }
public string NAME { get; set; }
public int RANK { get; set; }
}
public class stats
{
public string SEX { get; set; }
public string BREED { get; set; }
public int PVPRATING { get; set; }
public string NAME { get; set; }
public string FIRSTNAME { get; set; }
public string PVPTITLE { get; set; }
public string LASTNAME { get; set; }
public int CHAR_DIMENSION { get; set; }
public int ALIENLEVEL { get; set; }
public string RANK_name { get; set; }
public int HEADID { get; set; }
public string PROFNAME { get; set; }
public int LEVELX { get; set; }
public string PROF { get; set; }
public int CHAR_INSTANCE { get; set; }
public string SIDE { get; set; }
}
誰かが解決策を持っていれば、本当にありがたいです。私はこのタイプのスタイルを使用するものがいくつかあります。私が解決策を得ることができれば、それを残りの部分に適用できるはずです。
お返事ありがとうございました!結果は次のとおりです。追加情報:JsonReaderからJArrayを読み取る際にエラーが発生しました。現在のJsonReaderアイテムは配列ではありません:String。 Path ''、1行目、536位です。このJSONはちょっとしたもので、私を壁に追い込んでくれます。 –
確認事項:(1)あなたのJSONは質問に投稿されたものと同じですか、別のオブジェクトにラップされていますか?後者の場合は、コンバータを修正して補正する必要があります。 (2)私の答えに示されているようにDeserializeObjectを正確に呼びますか?このコンバータが動作することを示すために私はフィドルを追加しました。それをあなたのコードと照合してください。 –
Brain、JSONはhttp://people.anarchy-online.com/character/bio/d/5/name/Kilmanagh/bio.xml?data_type=jsonから来ています。私は正確なJSONを貼り付けました。あなたのdotnetfiddleは魅力のように動作します。 JSONをダウンロードしてからJsonConvert.ToStringを使用してwebclientを使用しています。多分それが違いを生み出しているのかもしれません。 –