我有一個 json 檔案,我對它進行了反序列化,如下面的代碼所示。一些背景關系,dex是一個機器人,它具有諸如battery下面的 json 檔案中所示的資訊。我想讀取用戶選擇的機器人的電池狀態 ( robot)。
這是我的代碼,目前我只能訪問data.dex,但我想將其更改為任何一個data.robot,其中機器人是一個變數
var data = JsonConvert.DeserializeObject<Root>(json);
var robot = queryDetails2.Amr;
var text =$"";
if (data.dex.battery.status == "good")
{
text = $"{queryDetails2.Amr}'s battery is in good condition. ";
}
這是json檔案:
{
"dex":
{
"current_job":
{"job":null, "task": null, "location": null},
"battery":
{"name":"battery", "status": "good", "value": "100"},
},
"dex_1":
{
"current_job":
{"job":null, "task": null, "location": null},
"battery":
{"name":"battery", "status": "good", "value": "100"},
},
"dex_2":
{
"current_job":
{"job":null, "task": null, "location": null},
"battery":
{"name":"battery", "status": "good", "value": "100"},
}
}
我想使用 GetMethod 或此問題中建議的解決方案(https://stackoverflow.com/questions/53076743/how-to-access-variable-of-a-nested-functions-in-python[1]) .
但是,我遇到錯誤,就像它沒有方法一樣。現在我很困惑,是因為我用過var嗎?但是反序列化的方法雖然將json轉換為物件..
無論如何,我應該如何處理這個?
uj5u.com熱心網友回復:
假設您有 3 個具有不同名稱的機器人:和dex,您應該重新組織您的解決方案,將 json 資料視為一個串列,而不是每個機器人的 3 個單獨變數。dex_1dex_2Robots
為此,首先您的 json 應如下所示:
{
"robots":[
{
"name":"dex",
"current_job":{
"job":null,
"task":null,
"location":null
},
"battery":{
"name":"battery",
"status":"good",
"value":"100"
}
},
{
"name":"dex_1",
"current_job":{
"job":null,
"task":null,
"location":null
},
"battery":{
"name":"battery",
"status":"good",
"value":"100"
}
},
{
"name":"dex_2",
"current_job":{
"job":null,
"task":null,
"location":null
},
"battery":{
"name":"battery",
"status":"good",
"value":"100"
}
}]
}
接下來,更新您的序列化類。添加一個name在Robot類中呼叫的欄位或您當前擁有的任何型別別data.dex。在Root中,洗掉“dex”欄位并添加List<Robot>.
public class Root
{
public List<Robot> robots { get; set; }
}
public class Robot
{
public string name { get; set; }
public Job current_job { get; set;}
public Battery battery{ get; set; }
}
現在您可以撰寫任何邏輯來獲取正確的機器人資料。這是一個使用示例System.Linq:
var robotName = "dex_2";
var robotInfo = data.robots.First(x => x.name.Equals(robotName));
var text = $"{robotName}'s battery is in {robotInfo.battery.status} condition.";
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518548.html
標籤:C#json目的
