Мне нужно сериализовать json файл, который включает в себя xml внутри - PullRequest
1 голос
/ 28 марта 2020

У меня есть JSON, и мне нужно его десериализовать. Json файл содержит XML внутри. Есть предложения?

{"nt":0,"r":true,"o":[{"test":"20fgfgdfgdfAZ20AIgdg151","fddf":"ZregrIPgdffgfSgfg","d":"<DataPDU xmlns="urn:cma:stp:xsd:stp.1.0">
<Body>
</AppHdr>
<Document xmlns="urn:iso:">  
      ..... 
    </Document></Body>
</DataPDU>"}]}

Ответы [ 2 ]

3 голосов
/ 28 марта 2020

Кажется, что ваша строка JSON неверна. У вас есть кавычки, не экранированные в o[0].d или XML разделе. Ниже предоставлена ​​версия JSON с экранированными кавычками.

{
    "nt": 0,
    "r": true,
    "o": [
         {
            "test": "20fgfgdfgdfAZ20AIgdg151",
            "fddf": "ZregrIPgdffgfSgfg",
            "d": "<DataPDU xmlns=\"urn:cma:stp:xsd:stp.1.0\"><Body></<Document xmlns=\"urn:iso:\">  ..... </Document></Body></DataPDU>"
         }
     ]
}

Использование. NET Core 3.1 и пространство имен System.Text.Json, которые можно десериализовать выше json, используя что-то вместе строки:

async Task Main()
{
    string fileName = "ExampleJson.txt";
    Example example = null;

    using (FileStream fs = File.OpenRead(fileName))
    {
        example = await JsonSerializer.DeserializeAsync<Example>(fs);
    }
}

Документацию по использованию пространства имен System.Text.Json можно найти здесь .

0 голосов
/ 28 марта 2020

Обратите внимание, что " должен измениться на \" в вашем xml - STRING , понимая, что код не будет работать. ;)

using System.Text.Json;
public myJson()
{
    string json = "<json>";
    Rootobject jsonObject = JsonConvert.DeserializeObject<Rootobject>(json);
}
public class Rootobject
{
    public int nt { get; set; }
    public bool r { get; set; }
    public O[] o { get; set; }
}

public class O
{
    public string test { get; set; }
    public string fddf { get; set; }
    public string d { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...