次の 2 つの方法を使用して、必要な値を取得できます。
方法 1:
「Issuer」の値はオブジェクトであるため、まずJToken
a から a へのキャストが必要です。JObject
var compInfo = (JObject)feed["DataFeed"]["Issuer"];
次に、すべてのプロパティをループして「Name」という名前のプロパティを見つけ、その値を文字列として取得します。
var str = compInfo.Properties().First(x => x.Name == "name").ToObject<string>();
// str will contain the value 'Apple'.
方法 2:
JSON を扱いやすいオブジェクトに逆シリアル化することもできます。これを行うには、最初に JSON に相当する .net オブジェクトを作成する必要があります。Visual Studio を使用して、[編集] メニュー -> [形式を選択して貼り付け] -> [JSON をクラスとして貼り付け] からこれらを生成するか、JsonUtils.comなどの Web サイトを使用できます。
public class Xml
{
[JsonProperty("@version")]
public string Version { get; set; }
[JsonProperty("@encoding")]
public string Encoding { get; set; }
}
public class Issuer
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("symbol")]
public string Symbol { get; set; }
}
public class DataFeed
{
[JsonProperty("@FeedName")]
public string FeedName { get; set; }
[JsonProperty("Issuer")]
public Issuer Issuer { get; set; }
}
public class RootJsonObject
{
[JsonProperty("?xml")]
public Xml Xml { get; set; }
[JsonProperty("DataFeed")]
public DataFeed DataFeed { get; set; }
}
次に、発行者名を取得するために必要なことは次のとおりです。
var feed = JsonConvert.DeserializeObject<RootJsonObject>(json);
var issuer = feed.DataFeed.Issuer.Name;