CONSULTANDO ITENS DE UMA JSON
Estou com um problema que esta paralizando meu projeto, preciso ler os itens de uma json.
[{
[Ô]tabelaPrecoId[Ô]:6988,
[Ô]representadaId[Ô]:3360,
[Ô]planoPagamentoId[Ô]:5104,
[Ô]clienteId[Ô]:18117,
[Ô]dataEdicao[Ô]:[Ô]2016-02-27T14:30:42-03:00[Ô],
[Ô]dataEmissao[Ô]:[Ô]27/02/2016[Ô],
[Ô]dataEntrega[Ô]:[Ô][Ô],
[Ô]desconto1[Ô]:0.00,
[Ô]desconto2[Ô]:0.00,
[Ô]desconto3[Ô]:0.00,
[Ô]id[Ô]:36258,
[Ô]itemPedidoList[Ô]:
[{
[Ô]produtoId[Ô]:113552,
[Ô]desconto[Ô]:0.00,
[Ô]id[Ô]:285440,
[Ô]precoUnitario[Ô]:34.00,
[Ô]quantidade[Ô]:1.00
}],
[Ô]numero[Ô]:7,
[Ô]observacoes[Ô]:[Ô][Ô],
[Ô]ordemCompra[Ô]:[Ô][Ô],
[Ô]situacao[Ô]:[Ô]Em carteira[Ô],
[Ô]totalBruto[Ô]:34.00,
[Ô]totalLiquido[Ô]:34.00,
[Ô]vendedorId[Ô]:-1,
[Ô]versao[Ô]:1
}]
a parte principal eu consigo ler sem problema mas não consigo entrar no array itemPedidoList, como eu posso fazer isso ?
segue parte do meu codigo.
Private sub consulta
Dim baseUri As New Uri([Ô]http://pedidomobile.com[Ô])
Dim myUri As New Uri(baseUri, [Ô]webservice2/webresources/pedido[Ô])
Dim html As String = cliente.DownloadString(New Uri(myUri.ToString))
Dim jsonString As String = html
MsgBox(html)
txtvendas.Text = html
[ô]IO.File.ReadAllText(consulta)
Dim myJsonTool As New JavaScriptSerializer
Dim pedidos As List(Of pedidosweb) = myJsonTool.Deserialize(Of List(Of pedidosweb))(jsonString)
bsMyData.DataSource = pedidos
dgvitens.DataSource = bsMyData
end sub
Public Class pedidosweb
Public Property id As String
Public Property numero As String
Public Property observacoes As String
Public Property situacao As String
Public Property vendedorid As String
Public itemPedidoList
Public Property produtoId As String
Public Property desconto As String
End Class
meu conhecimento não e tao grande qualquer ajuda será muito bem vinda.
desde já Obrigado a Todos.
Citação::
Seu código parece estar correto, apesar de eu não aconselhar usar um JavaScriptSerializer, mas sim um DataContractJsonSerializer... qual sua dificuldade?
Obrigado pelo apoio kerplunk
então meu problema está em entrar nesta parte do json
[{
[Ô]produtoId[Ô]:113552,
[Ô]desconto[Ô]:0.00,
[Ô]id[Ô]:285440,
[Ô]precoUnitario[Ô]:34.00,
[Ô]quantidade[Ô]:1.00
}],
já tentei de tudo não estou conseguindo, eu preciso levar isso para o grid, mas não está dando certo,
tendo em vista que serão mais de um item para o pedido o pedido irá se repetir devido a quantidade de itens ou um grid para pedidos ou outro para itens.
como valido
segue trecho do codigo
Dim myJsonTool As New JavaScriptSerializer
Dim pedidos As List(Of pedidosweb) = myJsonTool.Deserialize(Of List(Of pedidosweb))(jsonString)
bsMyData.DataSource = pedidos.itemPedidoList()
dgvitens.DataSource = bsMyData
quando eu utilizo o watch
na variavel pedidos.itemPedidoList eu tenho [ô]itemPedidoList[ô] is not a member of [ô]System.Collections.Generic.List(Of Integraçãocontrol.Principal.pedidosweb)[ô].
e somente pedido recebo Count = 1
Public Class pedidosweb
[ô]propriedades aqui, removi elas só para ficar menor no exemplo
Public itemPedidoList As List(Of itempedido)
[ô]outras propriedades aqui
End Class
Public Class itempedido
Public Property produtoId As Integer
Public Property desconto As Single
Public Property id As Integer
Public Property precoUnitario As Single
Public Property quantidade As Single
End Class
Citação:Private Sub consulta_todos_pedidos()
Dim cliente As New WebClient
cliente.Headers.Add([Ô]Authorization[Ô], [Ô]Basic [Ô] +
Convert.ToBase64String(Encoding.ASCII.GetBytes([Ô]fernandofariabrito@gmail.com:xxxxxxxxx[Ô])))
cliente.Encoding = System.Text.Encoding.GetEncoding([Ô]utf-8[Ô])
Dim baseUri As New Uri([Ô]http://xxxxxx.com[Ô])
Dim myUri As New Uri(baseUri, [Ô]webservice2/webresources/pedido[Ô])
Dim html As String = cliente.DownloadString(New Uri(myUri.ToString))
Dim jsonString As String = html
MsgBox(html)
Dim myJsonTool As New JavaScriptSerializer
Dim pedidos As List(Of pedidosweb) = myJsonTool.Deserialize(Of List(Of pedidosweb))(jsonString)
bsMyData.DataSource = pedidos
dgvitens.DataSource = bsMyData
End Sub
Public Class pedidosweb
Public Property id As String
Public Property numero As String
Public Property observacoes As String
Public Property situacao As String
Public Property vendedorid As String
Public Property produtoId As String
Public Property desconto As String
Public itemPedidoList As List(Of itempedido)
End Class
Public Class itempedido
Public Property produtoId As Integer
Public Property desconto As Single
Public Property id As Integer
Public Property precoUnitario As Single
Public Property quantidade As Single
End Class
pelo que eu entendi desculpe se estiver falando besteira mas no data source do datagrid dos itens deve entrar .datasource = pedidos.itempedidolist correto ?
ainda sim o itempedidolist não e reconhecido como parametro.
no watch aparece assim:
pedidos.itempedido() [ô]itempedido[ô] is not a member of [ô]System.Collections.Generic.List(Of Integraçãocontrol.Principal.pedidosweb)[ô].
itempedido [ô]itempedido[ô] is a type and cannot be used as an expression.
pedidosweb.itempedidolist Reference to a non-shared member requires an object reference.
pedidosweb.Itempedido [ô]Itempedido[ô] is not a member of [ô]Integraçãocontrol.Principal.pedidosweb[ô].
Muito obrigado pela ajuda
Qualquer outra coisa deve ser algum código válido, como a variável pedidos é um list, você precisaria colocar da mesma forma como se acessaria um item em um list, por exemplo para pegar o primeiro item seria
pedidos(0)
Para pegar a lista de itens
pedidos(0).itemPedidoList
Se eu quiser pegar o primeiro item da lista itemPedidoList é a mesma coisa
pedidos(0).itemPedidoList(0)
Então eu não sei como vai funcionar exatamente os dados que você pega, mas ele basicamente está te dando uma lista de pedidos e cada uma delas possui uma lista de itens, acontece de no seu exemplo ter apenas um pedido com um item na lista dele
ainda não vou encerrar o topico porque ainda não testei mas assim que testar aqui eu retorno com a solução. obrigado a todos pelo apoio.