だから私は、次のようなサードパーティのAPIによって返されたJSONを解析しようとしています:
{
"status":"ok",
"links":
[
{
"link":
{
"link_name":"Sample",
"link_id":"9999"
}
},
],//and so on with other nested properties
JSONをマップするクラスを作成しました
[DataContract]
public class JsonTestResults
{
[DataMember]
public string status { get; set; }
[DataMember]
public IEnumerable<Link> links { get; set; }
}
[DataContract]
public class Link
{
[DataMember]
public string link_name { get; set; }
[DataMember]
public string link_id { get; set; }
}
そして、このデシリアライザーを介して応答をプッシュしています (この投稿から取得)
public T Deserialise<T>( string json )
{
T obj = Activator.CreateInstance<T>( );
using (MemoryStream ms = new MemoryStream( Encoding.Unicode.GetBytes( json ) ))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer( obj.GetType( ) );
obj = (T)serializer.ReadObject( ms );
return obj;
}
}
ただし、デシリアライズした結果、Link[] の内容が null として表示されます。(返されるそれぞれに Link オブジェクトがありますが、link_name と link_id は null です。)
this、this、this、this、thisをチェックアウトしましたが、この問題を解決できませんでした。サードパーティのライブラリを必要としないソリューションを探しています。(私の主任開発者による)。
JSON に一致するクラスに問題があるとは思いませんが、レビューしたい人がいる場合は、完全なコードを投稿できます。