2017-08-03 97 views
0

我有一些JSON數據趕回來,看起來像(複製並VS文本粘貼可視化)的字符串:轉換JSON輸出到C#列出

{ 
    "error":0, 
    "result":{ 
     "name":"wjetestuser1", 
     "id":"0eu0_User_2_0b4cfb616e648d4792056c1a6e7d801e_null", 
     "status":"ACTIVE" 
    } 
} 
{ 
    "match":[ 
     [ 
     "domain.id", 
     "=", 
     "2" 
     ], 
     [ 
     "loginName", 
     "=", 
     "wjetestuser1" 
     ] 
    ], 
    "return":[ 
     "name", 
     "id", 
     "status" 
    ] 
} 

我試圖把它變成一個列表一切後"result":{"match":之前不使用替換命令,所以我就結束了,看起來像一個列表:

 
Name, wjetestuser1 
id, 0eu0_User_2_0b4cfb616e648d4792056c1a6e7d801e_null 
status, ACTIVE 

如果我能得到錯誤代碼狀態回到那獎金,而是真的不需要。

我希望有一個簡單的(或幾個襯墊),不涉及用替換正則表達式命令分割字符串。

各種代碼嘗試到目前爲止,但這種工作對我來說,如果我之前剝去幷包括"result":和之後,並且包括以下{"match":

s是輸出上述作爲一行在

​​

錯誤3號線下來,出現錯誤:

Additional text encountered after finished reading JSON content: {. Path '', line 1, position 119.

+5

堆棧溢出的C#問題有一百萬個JSON,你試過看麼? – DavidG

+0

是的。並嘗試了很多,他們每次都會拋出錯誤,因爲輸入與他們的格式不匹配 - 因此問題 –

+2

那麼,爲什麼你沒有向我們展示你的一些努力?因爲現在你的問題看起來像「請爲我寫代碼」,這裏我們不這樣做。 – DavidG

回答

1

由於入佛門爵士this comment指出,如果你使用Newtownsoft庫您ç一個Read Multiple Fragments With JsonReader。從該網站舉例:

public class Role 
{ 
    public string Name { get; set; } 
} 

public class Main 
{ 
    string json = @"{ 'name': 'Admin' }{ 'name': 'Publisher' }"; 
    IList<Role> roles = new List<Role>(); 

    JsonTextReader reader = new JsonTextReader(new StringReader(json)); 
    reader.SupportMultipleContent = true; 

    while (true) 
    { 
     if (!reader.Read()) 
      break; 

     JsonSerializer serializer = new JsonSerializer(); 
     Role role = serializer.Deserialize<Role>(reader); 
     roles.Add(role); 
    } 

    foreach (Role role in roles) 
     Console.WriteLine(role.Name); 
} 

我原來的答覆是使最小的JSON解析器這種特定的情況下。 See revision history for that

+0

謝謝。最上面的一組代碼直接工作。第二套,我把我的字符串'放在.ToJsons(s)的括號之間,並且它完美無缺。 這比我正在處理的正則表達式混亂很多。 –

+1

@WayneEvans fyi朋友:用正則表達式解決它是不可能的。你必須使用堆棧。 [一些參考研究](https://en.wikipedia。org/wiki/Chomsky_hierarchy) –

+1

用這個**有效的** JSON字符串嘗試你的擴展方法* {「foo} {5」:「bar} {6」} * –