{
"Date": "2016-12-15",
"Data": {
"A": 4.4023,
"AB": 1.6403,
"ABC": 2.3457
}
}
キーA、Ab、ABCをどのように配列に入れることができますか?ちょうどキーは価値がありません。jsonオブジェクトからキーを取得して配列に変換する方法は?
{
"Date": "2016-12-15",
"Data": {
"A": 4.4023,
"AB": 1.6403,
"ABC": 2.3457
}
}
キーA、Ab、ABCをどのように配列に入れることができますか?ちょうどキーは価値がありません。jsonオブジェクトからキーを取得して配列に変換する方法は?
あなたはjson.netをインストールし、プロパティを照会するLINQ to JSONを使用することができます。
var jsonString = @"{
""Date"": ""2016-12-15"",
""Data"": {
""A"": 4.4023,
""AB"": 1.6403,
""ABC"": 2.3457
}
}";
var root = JToken.Parse(jsonString);
var properties = root
// Select nested Data object
.SelectTokens("Data")
// Iterate through its children, return property names.
.SelectMany(t => t.Children().OfType<JProperty>().Select(p => p.Name))
.ToArray();
Console.WriteLine(String.Join(",", properties)); // Prints A,AB,ABC
サンプルfiddle。
回答ありがとうございます;)良い週末を持っています – cool
組み込みのJavaScriptSerializer
を使用して、逆シリアル化してobject
にすることができます。この場合、任意のJSONオブジェクトは実際にIDictionary<string, object>
にデシリアライズされます。そして、あなたは、このような辞書に戻っobject
をキャストすることができますし、(再帰的に)そのキーと値を含め、その内容を照会:
var jsonString = @"{
""Date"": ""2016-12-15"",
""Data"": {
""A"": 4.4023,
""AB"": 1.6403,
""ABC"": 2.3457
}
}";
var root = new JavaScriptSerializer().Deserialize<object>(jsonString);
var properties = root
// Select nested Data object
.JsonPropertyValue("Data")
// Iterate through its children, return property names.
.JsonPropertyNames()
.ToArray();
Console.WriteLine(String.Join(",", properties)); // Prints A,AB,ABC
拡張メソッドを使用する:
public static class JavaScriptSerializerObjectExtensions
{
public static object JsonPropertyValue(this object obj, string key)
{
var dict = obj as IDictionary<string, object>;
if (dict == null)
return null;
object val;
if (!dict.TryGetValue(key, out val))
return null;
return val;
}
public static IEnumerable<string> JsonPropertyNames(this object obj)
{
var dict = obj as IDictionary<string, object>;
if (dict == null)
return null;
return dict.Keys;
}
}
ありがとうございましたdbc。良い一日を過ごしてください – cool
は、それをデシリアライズ?それを解析する? – Plutonix
JavaScriptを使用:https://jsfiddle.net/n73zmLs0/ –