使用 JSON.NET 反序列化格式错误的 JSON



我有一个看起来像这样的JSON片段:

{"123":{"name":"test","info":"abc"}}

123是一个 ID,可以根据每个请求进行更改。这是我无法控制的。

我想使用 JSON.NET 反序列化 JSON。我试过:

 User u = JsonConvert.DeserializeObject<User>(json);

但是,除非我像这样定义 JsonProperty 属性,否则这不起作用:

[JsonProperty("123")]
public string ID { get; set; }

但是,当然我实际上不能这样做,因为ID 123会在每个请求中更改。

如何使用 JSON.NET 读取 ID 属性并将其应用于 ID 类?

试试这个:

var json = "{"123":{"name":"test","info":"abc"}}";
var rootObject = JsonConvert.DeserializeObject<Dictionary<string, User>>(json);
var user = rootObject.Select(kvp => new User 
                                    { ID = kvp.Key, 
                                      Name = kvp.Value.Name, 
                                      Info = kvp.Value.Info 
                                    }).First();

这确实有一些不必要的开销,但考虑到情况,它会这样做。

我会这样做:

dynamic result = JsonConvert.DeserializeObject(json);
var myObject = result as JObject;
var properties = myObject.Properties();
var property = properties.FirstOrDefault(); // take first element 
string name = property.Name;
foreach (var item in properties)
{
    var jProperty = item as JProperty;
    var nestedJson = jProperty.Value.ToString();
    dynamic nestedResult = JsonConvert.DeserializeObject(nestedJson); // or put it into a model/data structure
}

如何形成如下 JSON(如果允许更改 JSON 模式):

{
    "ID": "123",
    "Properties":{"name":"test","info":"abc"}
}

这样一定是可能的。

相关内容

  • 没有找到相关文章

最新更新