none
Dúvida sobre serialização de objetos e json RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Estou me conectando com a API do mercadolivre e utilizo códigos semelhantes ao código abaixo : 

    Public Function GetItemDetails(ByVal resource As String) As Item
    
    
                Dim parametros As New List(Of RestSharp.Parameter)
                Dim parametro As New Parameter()
                Dim json As IRestResponse
    
                parametro.Name = "access_token"
                parametro.Value = AccessToken
                parametros.Add(parametro)
    
                json = Me.Get(resource, parametros)
    
                retornoJson = json.Content.ToString
    
                Return JsonConvert.DeserializeObject(Of Item)(json.Content.ToString)
    
            End Function

    como podem ver eu pego o json recebido e mando direto para um objeto do tipo item

    O problema é que ao enviar um item o mercadolivre pede X campos e para retornar retorna Y.
    O campo URL por exemplo é um campo que só existe no retorno porém, se eu incluir na classe item uma propriedade URL, na hora de realizar o post o mercadolivre diz que eu não posso passar URL.

    Minha pergunta é.. eu precisarei criar duas classes diferentes , uma para receber dados e outra para enviar dados.
    Um item_post e um item_get por exemplo ?

    Não tem formas de eu usar a mesma classe item para os dois mas de alguma maneira na hora do post eu especificar que o campo URL não deve ser enviado ?

    A estrutura da item é igual para os dois casos, mas na hora do recebimento vem um campo a mais basicamente..

    Agradeço auxilio

    quinta-feira, 13 de agosto de 2015 14:46

Respostas

  • Boa tarde Rafael Metring,

    O que se passa, se fosse em quesito de persistência de dados existiria atributos para tal ação, todavia, como você está passando apenas uma classe, teoricamente para outro método do lado do mercado livre, o mais recomendado e que você separe as funções e crie uma classe para cada tipo de ação, visto que elas são compostas por informações diferentes.

    Atenciosamente, Roberto Alves

    • Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:19
    quinta-feira, 13 de agosto de 2015 18:18
  • Poderia fazer várias gambiarras pra fazer isso funcionar... mas é melhor criar 2... 

    pode criar uma base que tem os dados em comum e criar outra com herança na primeira e inserindo as propriedades a mais... 

    tem atributos de propriedade para informar a serialização para não enviar determinadas propridades, tem que ver no google, não lembro quais são. 

    pesquisa. Serializacao ignorar prorpiedade. 


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    • Marcado como Resposta Rafael Metring segunda-feira, 17 de agosto de 2015 21:33
    quinta-feira, 13 de agosto de 2015 18:20

Todas as Respostas

  • Boa tarde Rafael Metring,

    O que se passa, se fosse em quesito de persistência de dados existiria atributos para tal ação, todavia, como você está passando apenas uma classe, teoricamente para outro método do lado do mercado livre, o mais recomendado e que você separe as funções e crie uma classe para cada tipo de ação, visto que elas são compostas por informações diferentes.

    Atenciosamente, Roberto Alves

    • Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:19
    quinta-feira, 13 de agosto de 2015 18:18
  • Poderia fazer várias gambiarras pra fazer isso funcionar... mas é melhor criar 2... 

    pode criar uma base que tem os dados em comum e criar outra com herança na primeira e inserindo as propriedades a mais... 

    tem atributos de propriedade para informar a serialização para não enviar determinadas propridades, tem que ver no google, não lembro quais são. 

    pesquisa. Serializacao ignorar prorpiedade. 


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    • Marcado como Resposta Rafael Metring segunda-feira, 17 de agosto de 2015 21:33
    quinta-feira, 13 de agosto de 2015 18:20
  • Eric,

    A utilização de herança eu achei interessante a idéia.
    Quanto ao atributo para não serializar eu dei uma breve pesquisada e achei isso :
    <NonSerialized()> _
    Só preciso testar para ver se vai dar certo para o meu caso.
    De qualquer forma agradeço muito a ajuda. Um dos dois eu irei utilizar !
    segunda-feira, 17 de agosto de 2015 21:31
  • Obrigado pela resposta Roberto.. 
    Baseado na resposta do Eric estou pensando em usar herança para que eu tenha duas classes, mas não precise ficar repetindo as mesmas propriedades..


    segunda-feira, 17 de agosto de 2015 21:33