【发布时间】:2022-01-25 17:57:10
【问题描述】:
我希望有人可以帮助我。这是我用来通过 api(在本例中为 Twinkly 灯串)检索有关特定设备的一堆数据的代码。 这是我的部分代码。
HttpResponseMessage result = await httpClient.GetAsync(uri);
string response = await result.Content.ReadAsStringAsync();
JObject jObject = JObject.Parse(response);
Layout layout = new Layout();
layout = JsonConvert.DeserializeObject<Layout>(response);
我说它是“部分”功能的,因为根级别中的每个属性都可以很好地反序列化到模型中,但是 json 还返回一个名为“坐标”的属性,该属性由每个灯泡的数组条目和每个条目组成x,y,z 具有三个值。
我已经尝试了很多东西来从坐标数组中获取数据,并且我可以中断模式查看数据在那里。
但是它没有正确反序列化。我在坐标数组中有正确数量的元素,但它们都是 x:0, y:0, z:0
这是我的模型架构。我希望有人可以帮助我。这是我第一次涉足 api 工作,也是我第一次拥有这样的嵌套模型。
internal class Layout
{
public int aspectXY { get; set; }
public int aspectXZ { get; set; }
public LedPosition[] coordinates { get; set; }
public string source { get; set; } //linear, 2d, 3d
public bool synthesized { get; set; }
public string uuid { get; set; }
}
internal class LedPosition
{
double x { get; set; }
double y { get; set; }
double z { get; set; }
}
注意:我尝试过像这样手动分配属性:
JToken dataToken = jObject.GetValue("coordinates");
确实收到了数据,但它没有帮助我,因为它只是转移了问题。
【问题讨论】:
-
公开 x、y 和 z 应该注意它
-
如果您需要帮助,您必须发布真正的 json,而不是图片。
标签: c# json api json-deserialization