我正在嘗試創建一個 JSON 物件,該物件在轉換為字串時應如下所示:
{
"ts":1634712287000,
"values":{
"temperature":26,
"humidity":87
}
}
這就是我試圖通過創建一個Newtonsoft.Json.Linq.JObject:
new JObject(new
{
Ts = 1634712287000,
Values = new JObject(new
{
Temperature = 26,
Humidity = 87
}),
});
使用此代碼,我收到以下錯誤:
Could not determine JSON object type for type <>f__AnonymousType2`2[System.Int32,System.Int32]."} System.ArgumentException
我顯然做錯了什么,但我無法弄清楚如何正確地做到這一點。我做錯了什么,如何JObject通過代碼在上面的示例中創建一個類似的內容?
uj5u.com熱心網友回復:
如果您不想創建類,我們可以嘗試將Json.NET與匿名物件一起使用。
var jsonData = JsonConvert.SerializeObject(new {
ts = 1634712287000,
Values = new {
Temperature = 26,
Humidity = 87
}
});
uj5u.com熱心網友回復:
您需要先創建整個匿名物件,然后才能對其進行轉換,因此:
var obj = new {
ts = 1634712287000,
values = new {
temperature = 26,
humidity = 87
},
};
var json = JObject.FromObject(obj).ToString(Newtonsoft.Json.Formatting.Indented);
輸出:
{
"ts": 1634712287000,
"values": {
"temperature": 26,
"humidity": 87
}
}
uj5u.com熱心網友回復:
添加 System.Text.Json 版本:
using System;
using System.Text.Json;
public class Program
{
public static void Main()
{
var myAnonymousModel = new
{
Ts = 1634712287000,
Values = new
{
Temperature = 26,
Humidity = 87
}
};
var camelCasePolicyOptions =
new JsonSerializerOptions(){ PropertyNamingPolicy =
JsonNamingPolicy.CamelCase,
WriteIndented = true };
Console.WriteLine(
JsonSerializer.Serialize(myAnonymousModel,
camelCasePolicyOptions ));
}
}
輸出:
{
"ts": 1634712287000,
"values": {
"temperature": 26,
"humidity": 87
}
}
見https://dotnetfiddle.net/JPUJRv
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465759.html
下一篇:在單個linq查詢中的串列中列出
