将 json 对象反序列化为字符串

问题描述 投票:0回答:1

我有一个班级

A
,其中有一个字段
string data

我执行一个服务器请求,获取一个 json 文本,我将其转换为

A
:

var a = JsonConvert.DeserializeObject<A>(jsonResponse);

问题是有时

data
作为字符串出现(例如:
Ball
),有时它作为 json 对象出现,如下所示:

"data" : {
    "field1" : "Ball",
    "field2" : "Foo"
}

这会破坏反序列化,因为字段

data
需要一个字符串。

有没有办法从 json 文本中捕获

data
作为字符串,即使它作为 json 对象出现?

c# json serialization json.net json-deserialization
1个回答
0
投票

以这样的事情作为起点怎么样? (受到 .NET TryParse 方法的启发):

public static bool TryDeserialize<T>(string jsonString, out T result)
{
    try
    {
        result = JsonConvert.DeserializeObject<T>(jsonString)!;
        return result is not null;
    }
    catch
    {
        result = default!;
        return false;
    }
}

然后你可以像这样使用它:

if (TryDeserialize<YourObjectModel>(jsonString, out YourObjectModel result))
{
    Console.WriteLine($"result is {result.Field1}");
}
else
{
    Console.WriteLine($"{nameof(jsonString)} value is {jsonString}");
}
© www.soinside.com 2019 - 2024. All rights reserved.