[英]How to sort and compare two JSON arrays in C#?
我有兩個 JSON arrays 如下
# 數組 1
[
{
"objectId": "34fc6a0c-be91-4a6d-b5dd-20ae347085c7",
"model": "robotics.energy",
"timestamp": "2020-08-07T12:36:40.697Z",
"value": 2.0
},
{
"objectId": "34fc6a0c-be91-4a6d-b5dd-20ae347085c7",
"model": "robotics.energy",
"timestamp": "2020-08-07T12:36:40.697Z",
"value": 4459.477340033425
}
]
# 數組2
[
{
"model": "robotics.energy",
"objectId": "34fc6a0c-be91-4a6d-b5dd-20ae347085c7",
"timestamp": "2020-08-07T12:36:40.697Z",
"value": 4459.477340033425
},
{
"timestamp": "2020-08-07T12:36:40.697Z",
"objectId": "34fc6a0c-be91-4a6d-b5dd-20ae347085c7",
"model": "robotics.energy",
"value": 2.0
}
]
我想斷言這兩個 arrays 是否相等。
我在下面嘗試了。 但它失敗了,因為元素的順序不同
var jarray1 = JArray.Parse(Array1);
var jarray2 = JArray.Parse(Array2);
JArray.DeepEquals(jarray1, jarray2);
無論如何嘗試如下它會引發錯誤,因為未實現 Icomparable 接口。
Enumerable.SequenceEqual(jarray1 .OrderBy(t => t), jarray2.OrderBy(t => t)).Should().BeTrue();
有沒有簡單的解決方案?
我想將其轉換為字符串,然后對其進行排序並進行驗證。 但我覺得這不是好辦法。
如下創建類以對其進行反序列化。
public class Telemetry
{
[JsonProperty("model")]
public string Model { get; set; }
[JsonProperty("objectId")]
public string ObjectId { get; set; }
[JsonProperty("timestamp")]
public string Timestamp { get; set; }
[JsonProperty("value")]
public object Value { get; set; }
}
public class TelemetryRoot
{
public List<Telemetry> Telemetries { get; set; }
}
然后如下進行比較反序列化的對象。
var array1Obj = JsonConvert.DeserializeObject<List<TelemetryRoot>>(Array1);
var array2Obj = JsonConvert.DeserializeObject<List<TelemetryRoot>>(Array2);
array1Obj.Should().BeEquivalentTo(array2Obj); //using fluent assertions
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.