Akula santhosh kumar Ответов: 1

Как преобразовать json в XML с атрибутами на языке Си#


Всем Привет,

У меня есть данные массива json и преобразованы в xml
Пример данных json:

public class jsonInput
   {
       public List<SyncActivity> General { get; set; }


       public List<SyncActivity> RA { get; set; }


       public List<SyncActivity> WA { get; set; }
   }


xml-разговор ниже здесь

string objActivityDetails = JsonConvert.SerializeObject(Activities);
            XmlDocument xmlObject = JsonConvert.DeserializeXmlNode("{\"root\":" + objDetails.ToString() + "}");

после xml разговора я получил результат

<root>
 
<RA>

<MemberId>12333354354</MemberId>

<UserId>4t34534534</UserId>

<CreatedBy>45435345</CreatedBy>

<UpdatedBy>0</UpdatedBy>

<UpdatedDate/>

</RA>
<pre><RA>

<MemberId>12333354354</MemberId>

<UserId>4t34534534</UserId>

<CreatedBy>45435345</CreatedBy>

<UpdatedBy>0</UpdatedBy>

<UpdatedDate/>

</RA>


<WA>

<MemberId>12333354354</MemberId>

<UserId>4t34534534</UserId>

<CreatedBy>45435345</CreatedBy>

<UpdatedBy>0</UpdatedBy>

<UpdatedDate/>

</WA>
<pre><WA>

<MemberId>12333354354</MemberId>

<UserId>4t34534534</UserId>

<CreatedBy>45435345</CreatedBy>

<UpdatedBy>0</UpdatedBy>

<UpdatedDate/>

</WA>





Но мне нужен следующий формат :

<roo>
<WA MemberId="12333354354" UserId="4t34534534" CreatedBy="45435345" />
<WA MemberId="12333354354" UserId="4t34534534" CreatedBy="45435345" />

<RA MemberId="12333354354" UserId="4t34534534" CreatedBy="45435345" />
<RA MemberId="12333354354" UserId="4t34534534" CreatedBy="45435345" />
</root>


пожалуйста, дайте мне знать, что вы ценная обратная связь.

Что я уже пробовал:

я попробовал сериализацию JSON. но возвращает дочерние узлы. я ожидал, что дочерние узлы будут атрибутами

Mehdi Gholam

Почему (атрибуты и элементы одинаковы)?

Akula santhosh kumar

Я передам XML-данные в SP. У меня есть тяжелые данные для передачи SP

1 Ответов

Рейтинг:
8

Richard Deeming

Если вы хотите придерживаться этого неэффективного подхода, вам нужно, чтобы имена свойств JSON были префиксированы символом "@" :

public class SyncActivity
{
    [JsonProperty("@MemberId")]
    public string MemberId { get; set; }
    
    [JsonProperty("@UserId")]
    public string UserId { get; set; }
    
    [JsonProperty("@CreatedBy")]
    public int CreatedBy { get; set; }
    
    [JsonProperty("@UpdatedBy")]
    public int UpdatedBy { get; set; }
    
    [JsonProperty("@UpdatedDate")]
    public DateTime UpdatedDate { get; set; }
}
Преобразование между JSON и XML[^]

Но преобразование вашего объекта в JSON только для того, чтобы преобразовать его обратно в XML, ужасно неэффективно. Было бы гораздо проще преобразовать объект непосредственно в XML:
XDocument document = new XDocument(
    new XElement("root",
        Activities.General.Select(a => new XElement("General",
            new XAttribute("MemberId", a.MemberId),
            new XAttribute("UserId", a.UserId),
            new XAttribute("CreatedBy", a.CreatedBy),
            new XAttribute("UpdatedBy", a.UpdatedBy),
            new XAttribute("UpdatedDate", a.UpdatedDate)
        )),
        Activities.RA.Select(a => new XElement("RA",
            new XAttribute("MemberId", a.MemberId),
            new XAttribute("UserId", a.UserId),
            new XAttribute("CreatedBy", a.CreatedBy),
            new XAttribute("UpdatedBy", a.UpdatedBy),
            new XAttribute("UpdatedDate", a.UpdatedDate)
        )),
        Activities.WA.Select(a => new XElement("WA",
            new XAttribute("MemberId", a.MemberId),
            new XAttribute("UserId", a.UserId),
            new XAttribute("CreatedBy", a.CreatedBy),
            new XAttribute("UpdatedBy", a.UpdatedBy),
            new XAttribute("UpdatedDate", a.UpdatedDate)
        ))
    )
);
Это также даст вам полный контроль над форматом сгенерированного XML-документа.


Maciej Los

5ed!