簡體   English   中英

從 JObject 中刪除雙大括號

[英]Remove double curly brackets from JObject

我有一個包含以下內容的 XYZ.Json 文件。

{
  "ABC": "Account",
  "CDE": "Balance",
  "EFG": "Enquiry"
}

使用以下代碼,我試圖從這個 Json 讀取並返回 JObject,但在 json 結構的開頭和結尾添加了額外的花括號。

JObject obj1 = JObject.Parse(System.IO.File.ReadAllText(@".\XYZ\install\XYZ.json));

對象 1:

{{
  "ABC": "Account",
  "CDE": "Balance",
  "EFG": "Enquiry"
}}

我試過這個選項,轉換Jobject.Tostring()但它沒有用。

也試過這段代碼,但我仍然看到同樣的問題。

    Dictionary<string, string> dict = new Dictionary<string, string>();
    JObject obj = JObject.Parse(System.IO.File.ReadAllText(@".\XYZ\install\XYZ.json));

    foreach (JProperty prop in obj.Properties())
    {
        dict.Add(prop.Name, obj.GetValue(prop.Name).ToObject<string>());
    };


    JObject obj3 = JObject.Parse(JsonConvert.SerializeObject(dict));

目標3:

{{
  "ABC": "Account",
  "CDE": "Balance",
  "EFG": "Enquiry"
}}

請建議是否有任何其他解決方案。

,您必須先將字典轉換為json格式

    JObject obj = JObject.Parse(File.ReadAllText(@"C:\temp\test.txt"));
    Dictionary<string, string> dict = new Dictionary<string, string>();

    foreach (JProperty prop in obj.Properties())
    {
        dict.Add(prop.Name, obj.GetValue(prop.Name).ToObject<string>());
    };

    var entries = dict.Select(d => string.Format($@"""{d.Key}"": ""{d.Value}"""));
    string convertedString = "{" + string.Join(",", entries) + "}";
    JObject obj3 = JObject.Parse(convertedString);

obj3 將為您提供與 obj 相同的對象。

雙花括號是Json 對象的內部表示 您不能刪除雙括號,因為這就是 JObject 中 json 的表示方式。 在上面的代碼中,從 Json 轉換為 Dictionary 然后再轉換回 Json 工作正常。

obj 和 obj3 變量都如下所示。

在此處輸入圖片說明

注意:您的示例僅適用於 string: string json .. 如果您有 strin:object,這將不起作用。

暫無
暫無

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

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