我尝试过:
JValue myJValue = getJValue(someVar);
int storedValue = JsonConvert.DeserializeObject(myJValue);
但这似乎只适用于JObjects。有没有办法从JValue中获取整数?
也许这能帮助您:
int storedValue = myJValue.ToObject<int>();
对于任何对性能感兴趣的人,Value()
比ToObject()
要快得多。对于字符串,只需使用ToString()
整数测试:
value.Value<int>() - 2496ms
value.ToObject<int>() - 6259ms
双重测试:
value.Value<double>() - 572ms
value.ToObject<double>() - 6319ms
字符串测试:
value.Value<string>() - 1767ms
value.ToObject<string>() - 6768ms
value.ToString() - 130ms
.
private static void RunPerfTest()
{
int loops = 100000000;
JValue value = new JValue(1000d);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < loops; i++)
{
double x = value.Value<double>();
}
sw.Stop();
Console.WriteLine("value.Value<double>()" + sw.ElapsedMilliseconds);
sw.Restart();
for (int i = 0; i < loops; i++)
{
double x = value.ToObject<double>();
}
sw.Stop();
Console.WriteLine("value.ToObject<double>()" + sw.ElapsedMilliseconds);
}
将myJValue转换为int类型并存储在storedValue中。
List<JValue>
,我们称之为 myJValueList
,并且列表中的 JValue
对象内部持有一个 int
,那么你可以通过以下方式获取该 int
:foreach(int myInt in myJValueList){
//do some work with the myInt
}