{
"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/ –