Newtonsoft Json.NET JSONProperty() 需要是任意随机数
Newtonsoft Json.NET JSONProperty() needs to be any random number
我不知道如何用任何数字创建 JSON属性。
例如,我收到的 JSON 从一开始就是这样的:
{ "255710": { "success": true,...
我遇到的具体问题是,第一个数字(在本例中为 255710)可以是任何随机数。因此我不能那么容易反序列化它。
我试过:
[JsonProperty("*")] [JsonProperty()] and [JsonProperty("")]
但我 运行 没主意了。
这个问题有什么聪明的解决办法吗?
非常感谢您的帮助。
试试这个
var json ="{ \"255710\": { \"success\": true}}";
var dict=JsonConvert.DeserializeObject<Dictionary<string,SuccessClass>>(json);
public class SuccessClass
{
[JsonProperty("success")]
public bool Success {get; set;}
}
如何使用
var success=dict["255710"].Success; // true
或者如果你更喜欢也可以使用int
var dict=JsonConvert.DeserializeObject<Dictionary<int,SuccessClass>>(json);
var success=dict[255710].Success; //true
或者如果您不知道密钥名称
var key=dict.Keys.First();
var success=dict[key].Success; // true
// or if you don't need a key
var successObj=dict.Values.First(); //the whole sucess class
var success=dict.Values.First().Success; //true
有几种方法可以解析这个 JSON。一种方法是使用 JObject 并跳过第一个元素,然后为了方便,转换为 dynamic 如下:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
string json = "{ \"123\": { \"success\": true, \"other\": \"the string\" } }";
JObject obj = JsonConvert.DeserializeObject<JObject>(json);
var dyn = obj.First.First.ToObject<dynamic>();
Console.WriteLine($"dyn.success: {dyn.success}");
Console.WriteLine($"dyn.other: {dyn.other}");
这将输出:
dyn.success: True
dyn.other: the string
我跳过了第一个元素,因为它是随机的,但你应该问问自己它是否真的是随机的。它不是方法调用的 id 吗?如果是,那么您可以更轻松地将其转换为字典,只需读取带有 ID 的密钥即可。
如果您知道结果,您也可以使用强类型 class 作为结果。
我不知道如何用任何数字创建 JSON属性。 例如,我收到的 JSON 从一开始就是这样的:
{ "255710": { "success": true,...
我遇到的具体问题是,第一个数字(在本例中为 255710)可以是任何随机数。因此我不能那么容易反序列化它。
我试过:
[JsonProperty("*")] [JsonProperty()] and [JsonProperty("")]
但我 运行 没主意了。
这个问题有什么聪明的解决办法吗? 非常感谢您的帮助。
试试这个
var json ="{ \"255710\": { \"success\": true}}";
var dict=JsonConvert.DeserializeObject<Dictionary<string,SuccessClass>>(json);
public class SuccessClass
{
[JsonProperty("success")]
public bool Success {get; set;}
}
如何使用
var success=dict["255710"].Success; // true
或者如果你更喜欢也可以使用int
var dict=JsonConvert.DeserializeObject<Dictionary<int,SuccessClass>>(json);
var success=dict[255710].Success; //true
或者如果您不知道密钥名称
var key=dict.Keys.First();
var success=dict[key].Success; // true
// or if you don't need a key
var successObj=dict.Values.First(); //the whole sucess class
var success=dict.Values.First().Success; //true
有几种方法可以解析这个 JSON。一种方法是使用 JObject 并跳过第一个元素,然后为了方便,转换为 dynamic 如下:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
string json = "{ \"123\": { \"success\": true, \"other\": \"the string\" } }";
JObject obj = JsonConvert.DeserializeObject<JObject>(json);
var dyn = obj.First.First.ToObject<dynamic>();
Console.WriteLine($"dyn.success: {dyn.success}");
Console.WriteLine($"dyn.other: {dyn.other}");
这将输出:
dyn.success: True
dyn.other: the string
我跳过了第一个元素,因为它是随机的,但你应该问问自己它是否真的是随机的。它不是方法调用的 id 吗?如果是,那么您可以更轻松地将其转换为字典,只需读取带有 ID 的密钥即可。
如果您知道结果,您也可以使用强类型 class 作为结果。