簡體   English   中英

如何反序列化列表<float>來自 JSON 字符串?

[英]How to deserialize a List<float> from a JSON string?

這是我的 JSON 字符串,它只代表一個簡單的列表: {"accelerationsList":"[-3.1769, 3.304, 6.3455997, 3.1701]"}

這是我反序列化它的 C# 代碼:

HttpContent requestContent = Request.Content;
string jsonContent = requestContent.ReadAsStringAsync().Result; // i know about deadlock...
List<float> accelerationsList = new JavaScriptSerializer().Deserialize<List<float>>(jsonContent);

我不知道為什么我的accelerationsList 是空的! 有什么建議?

使用 Newtonsoft.Json,它使它變得干凈

string accelerationsListString = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonContent)["accelerationsList"];
List<float> accelerationsList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<float>>(accelerationsListString);

你得到的是字符串中浮點數的列表,所以我們需要在提取后將字符串轉換為列表

我相信除了 1 個問題之外,您已經擁有了您正在尋找的大部分內容。

您正在嘗試將整個內容(json 字符串)轉換為 List。 您需要正確轉換json 對象以獲取accelerationsList 的值,然后正確轉換作為您的浮點數列表的字符串。

string jsonContent = @"{""accelerationsList"":""[-3.1769, 3.304, 6.3455997, 3.1701]""}";
var stringRepOfArray = JObject.Parse(jsonContent)["accelerationsList"].ToString();

List<float> floatList = new JavaScriptSerializer().Deserialize<List<float>>(stringRepOfArray);

輸出:

floatList
Count = 4
    [0]: -3.1769
    [1]: 3.304
    [2]: 6.34559965
    [3]: 3.1701

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM