[英]Deserialize json into python like Dictionary with C#
我需要使用 .net 核心 3.1 中的System.Text.Json
庫以靜態類型語言編寫動態類型系統。 我需要的是將文件反序列化為 Python 之類的字典。 我必須為此使用 C# 因為我們無法讓 python 正確地對我們的系統進行身份驗證。 C# 是我們的默認語言,所以...
在現實世界中,這些文檔位於 CosmosDB 中。 該程序接收一個指向文檔結構中特定字段的配置文件,它必須檢查這些字段,可能更新它們,然后將結果寫回 CosmosDB。 目前,我正在構建一個指向特定領域的系統。 由於系統不知道從宇宙回來的文檔的結構是什么,它不能使用正式的模型。 我目前正在使用測試套件中的 static 文件檢查或更新字段的系統。 完成后我會擔心 cosmos DB。
以這個文件為例:
{
"azureSql": {
"databaseName": "ordersdb",
"tables": [
{
"tableName": "mytable",
"columnNames": [
"column1",
"column2"
]
}
]
},
"cosmosDb": {
"databaseName": "CosmosDb",
"collections": [
{
"collectionName": "TestCollection",
"fieldNames": [
"MyStatus.json.path.to.field"
]
}
]
}
}
像這樣的文件被讀入。輸入幾乎可以是任何類型的合法 json。 我需要將其放入我可以訪問的字典中,類似於 Python mydict["cosmosDb"]["collections"][0]["fieldNames"]
該行:
_entities = JsonSerializer.Deserialize<Dictionary<string, object>>(jsonString);
不起作用,因為它只序列化第一級。 rest 是 json 入口類型。
我發現這個C# 方法來模仿 Python 字典語法
和它的關閉,但它只支持字符串並且在Deserialize
方法中不起作用。
關於如何解決這個問題的任何想法?
我建議你使用動態
var entities = JsonSerializer.Deserialize<dynamic>(jsonString)
以下類結構會起作用嗎?
public class Rootobject
{
public Azuresql azureSql { get; set; }
public Cosmosdb cosmosDb { get; set; }
}
public class Azuresql
{
public string databaseName { get; set; }
public List<Table> tables { get; set; }
}
public class Table
{
public string tableName { get; set; }
public List<string> columnNames { get; set; }
}
public class Cosmosdb
{
public string databaseName { get; set; }
public List<Collection> collections { get; set; }
}
public class Collection
{
public string collectionName { get; set; }
public List<string> fieldNames { get; set; }
}
編輯:這有效:
using Newtonsoft.Json.Linq;
var result = JObject.Parse(jsonFile);
var detail = result["cosmosDb"]["collections"][0]["collectionName"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.