解析对象以 c# 中的数字开头的 JSON 响应
Parse JSON response where the object starts with a number in c#
我正在尝试将来自 REST 服务的响应反序列化为 C# 强类型 classes - 但是我 运行 在这个 post 中遇到了同样的问题:
How do I output this JSON value where the key starts with a number?
但是我遇到的问题是您不能在 c# 中以数字开头变量名 - 这意味着该级别的 class 只是反序列化为 null。
我需要知道如何进入对象并将它们反序列化到 c# classes。
我当前的代码如下:
public static async Task<T> MakeAPIGetRequest<T>(string uri)
{
Uri requestURI = new Uri(uri);
using (HttpClient client = new HttpClient())
{
HttpResponseMessage responseGet = await client.GetAsync(requestURI);
if (responseGet.StatusCode != HttpStatusCode.OK)
{
throw new Exception(String.Format(
"Server error (HTTP {0}: {1}).",
responseGet.StatusCode,
responseGet.Content));
}
else
{
string response = await responseGet.Content.ReadAsStringAsync();
T objects = (JsonConvert.DeserializeObject<T>(response));
return objects;
}
}
}
编辑:我无法更改服务推送数据的方式
虽然在这种情况下没有直接构造强类型 C# 对象的方法,但您仍然可以手动解析 json
字符串并提取值 -
var json = "{'1':{'name':'test','age':'test'}}";
var t = JObject.Parse(json)["1"];
Console.WriteLine(t["name"]); //test
Console.WriteLine(t["age"]); //test
处理这个问题的正确方法是在目标 类 上使用 Json属性 标签来定义 Json 属性 收听的内容为,如下图(参考自
public class MyClass
{
[JsonProperty(PropertyName = "24hhigh")]
public string Highest { get; set; }
...
感谢@HebeleHododo 的评论回答
我正在尝试将来自 REST 服务的响应反序列化为 C# 强类型 classes - 但是我 运行 在这个 post 中遇到了同样的问题: How do I output this JSON value where the key starts with a number?
但是我遇到的问题是您不能在 c# 中以数字开头变量名 - 这意味着该级别的 class 只是反序列化为 null。
我需要知道如何进入对象并将它们反序列化到 c# classes。
我当前的代码如下:
public static async Task<T> MakeAPIGetRequest<T>(string uri)
{
Uri requestURI = new Uri(uri);
using (HttpClient client = new HttpClient())
{
HttpResponseMessage responseGet = await client.GetAsync(requestURI);
if (responseGet.StatusCode != HttpStatusCode.OK)
{
throw new Exception(String.Format(
"Server error (HTTP {0}: {1}).",
responseGet.StatusCode,
responseGet.Content));
}
else
{
string response = await responseGet.Content.ReadAsStringAsync();
T objects = (JsonConvert.DeserializeObject<T>(response));
return objects;
}
}
}
编辑:我无法更改服务推送数据的方式
虽然在这种情况下没有直接构造强类型 C# 对象的方法,但您仍然可以手动解析 json
字符串并提取值 -
var json = "{'1':{'name':'test','age':'test'}}";
var t = JObject.Parse(json)["1"];
Console.WriteLine(t["name"]); //test
Console.WriteLine(t["age"]); //test
处理这个问题的正确方法是在目标 类 上使用 Json属性 标签来定义 Json 属性 收听的内容为,如下图(参考自
public class MyClass
{
[JsonProperty(PropertyName = "24hhigh")]
public string Highest { get; set; }
...
感谢@HebeleHododo 的评论回答