Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用json.net反序列化简单类型?_Json_Json.net - Fatal编程技术网

如何使用json.net反序列化简单类型?

如何使用json.net反序列化简单类型?,json,json.net,Json,Json.net,net对于反序列化对象很方便,但我不知道如何使用它来反序列化一些简单类型,例如string、int 不确定我是否做对了,请帮忙,谢谢 WCF返回字符串看起来像 {"PingResult":100} 如果呼叫 int result = JsonConvert.DeserializeObject<int>(jsonString); 您不是反序列化整数,而是包含integer属性的对象。您需要提供这样一个类,以便反序列化工作,例如: class Ping { public in

net对于反序列化对象很方便,但我不知道如何使用它来反序列化一些简单类型,例如string、int

不确定我是否做对了,请帮忙,谢谢

WCF返回字符串看起来像

{"PingResult":100}
如果呼叫

int result = JsonConvert.DeserializeObject<int>(jsonString);

您不是反序列化整数,而是包含integer属性的对象。您需要提供这样一个类,以便反序列化工作,例如:

class Ping
{
    public int PingResult {get; set;}
}
然后打电话

Ping ping = JsonConvert.DeserializeObject<Ping>(jsonString);
int result = ping.PingResult;

反序列化存储为字符串(此问题的标题)的简单类型可以按如下方式完成:

    private static T ParseStringToTypedValue<T>(string value)
    {
        if (typeof(T) == typeof(string))
        {
            return JToken.Parse($"\"{value}\"")
                         .Value<T>();
        }

        return JToken.Parse(value)
                     .Value<T>();
    }
private static T ParseStringToTypedValue(字符串值)
{
if(typeof(T)=typeof(string))
{
返回JToken.Parse($“\{value}\”)
.Value();
}
返回JToken.Parse(值)
.Value();
}

这应该处理所有基本类型、浮点、整数、字符串等

哦,我认为它可能可以处理这个问题,因为为每个类创建新类不是一个好主意,特别是如果我们有很多方法要调用的话:p尽管如此,调用JObject API这样做还是非常方便的。谢谢你,伙计:]这里有密码,以防有人需要<代码>字符串json=“{\“PingResult\”:100}”;JObject jo=JObject.Parse(json);JToken result=jo[“PingResult”]我很高兴我提供了帮助,将您的示例添加到我的答案中,使其更加完整。
string json="{\"PingResult\":100}"; 
JObject jo = JObject.Parse(json); 
JToken jToken = jo["PingResult"];
int result = (int)jToken;
    private static T ParseStringToTypedValue<T>(string value)
    {
        if (typeof(T) == typeof(string))
        {
            return JToken.Parse($"\"{value}\"")
                         .Value<T>();
        }

        return JToken.Parse(value)
                     .Value<T>();
    }