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