antiblock
Elveron
  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
NewWars

Exemplo De Uso Do Json Entre C++ E C#

13 posts in this topic

Boas pessoal.

 

Bem, estive a pesquisar sobre o JSON e percebi que não pesco lá muito disto xD.

 

Gostava que alguem me desse um exemplo de uso do JSON no C++ e C#, em C# estou a usar SimpleJSON agora em C++ não sei qual usar, mas tive a ver secalhar usava JSON-CPP.

 

Um PRO nisto que me diga qual deles usar em cada lingua respectiva e um exemplo simples de uma string, int, float, string array, etc...

 

 

Agradecia imenso!

 

 

Cumprimentos.

Share this post


Link to post
Share on other sites
antiblock
Rodnia | Alpha & Omega

Encontrei isto

	I'm using JSON Spirit on a project at the moment, I'm impressed with it so far.Note that it does rely on Boost (if only for headers).Handy features:Has Unicode support.Uses std::vector to hold Arrays which helps interoperability.Provides a pretty print function (write_formatted).Has read and write functions for strings and streams.Note that Objects are also implemented using vector (not map), which means slower access, but it does mean that the order of elements is maintained.

Share this post


Link to post
Share on other sites

Eu realmente nem sabia da existência disso mas pelo que percebi é usado para listar informação.

Tens aqui uma breve explicação: http://www.w3schools.com/json/

 

Obrigado pela ajuda morfo, mas fiquei na mesma xD...

 

Só um exemplo de uso entre os dois me vai fazer entender...

 

 

Encontrei isto

	I'm using JSON Spirit on a project at the moment, I'm impressed with it so far.Note that it does rely on Boost (if only for headers).Handy features:Has Unicode support.Uses std::vector to hold Arrays which helps interoperability.Provides a pretty print function (write_formatted).Has read and write functions for strings and streams.Note that Objects are also implemented using vector (not map), which means slower access, but it does mean that the order of elements is maintained.

 

Não gostei dessa "versão" do JSON, mas obrigado por tentares ajudar.

 

Cumprimentos.

Share this post


Link to post
Share on other sites

Vou usar JSON-CPP em C++ e SimpleJSON em C#, obrigado pela ajuda peeps.Agora gostava de um exemplo dos dois, imaginando que C++ e servidor e C# o cliente(Ficheiro txt ou apackets, como queira).Agradecia imenso.Cump

Share this post


Link to post
Share on other sites

BUMP!

 

Sera que ninguem sabe? :/

Share this post


Link to post
Share on other sites

Em C++ grande parte do que encontrei vais ver os testes e consome-te mesmo muito tempo.

 

Em C# utilizei o SimpleJSON, como é para uma aplicação que não tinha propriamente de estar muito optimizada não testei.

 

 

 

Em C++ o que fiz foi uma espécie de parser utilizando métodos relacionados com as strings com 2 funções, um total de 6 linhas de código , 1 linha numa e 5 noutra. Uma função verifica se existe o uma substring numa string e outra utiliza uma string iniciadora e uma final e copia o que está no meio.

 

ex:

MyYoloVar = MySuperValue*YoloVarEnd*

 

Chamo assim Parser.GetValue(StringCompleta, "MyYoloVar = ", "*YoloVarEnd*");

 

Easy e não podia consumir menos recursos (thumbsup)

Share this post


Link to post
Share on other sites

Em C++ grande parte do que encontrei vais ver os testes e consome-te mesmo muito tempo.

 

Em C# utilizei o SimpleJSON, como é para uma aplicação que não tinha propriamente de estar muito optimizada não testei.

 

 

 

Em C++ o que fiz foi uma espécie de parser utilizando métodos relacionados com as strings com 2 funções, um total de 6 linhas de código , 1 linha numa e 5 noutra. Uma função verifica se existe o uma substring numa string e outra utiliza uma string iniciadora e uma final e copia o que está no meio.

 

ex:

MyYoloVar = MySuperValue*YoloVarEnd*

 

Chamo assim Parser.GetValue(StringCompleta, "MyYoloVar = ", "*YoloVarEnd*");

 

Easy e não podia consumir menos recursos (thumbsup)

 

Então o que dizes é que tenho que criar o meu proprio parser para c++?

 

Cumprimentos.

Share this post


Link to post
Share on other sites

Então o que dizes é que tenho que criar o meu proprio parser para c++?

 

Cumprimentos.

Não, não precisas de criar o teu próprio parser. Podes usar um já existente (não vale a pena re-inventar a roda) rapidjson. Quanto aos exemplos, lê a documentação de cada um... JSON não é usado para "listar informação", é um método de transferir informação tendo completa abstracção da máquina.

Supondo que tens o servidorA e o clienteA, o processo de comunicação poderia ser algo como:

ServidorA usa JSON para reformatar a informação (o nome técnico é data serialization), envia para o clienteA que por sua vez processa a informação formatada "em JSON" (comum em todas as plataformas) e transforma num tipo de dados nativo (data deserialization).

Share this post


Link to post
Share on other sites

Eu não percebi ao certo o que ele queria mas pelo que fiquei a perceber depois duma conversa com ele isto é para um jogo online. Como lhe expliquei e gostava que ficasse publico para outras pessoas na mesma duvida lerem, eu nunca utilizaria JSON, dando serialize nos dados que o cliente actualizará e dando deserialize a nível do cliente, assim estas a mandar muito mais bytes do que é na realidade necessário (ponto n1), também é provável gastar mais tempo, recursos do que tendo uma estrutura que usarás como base, Header/Content, mandas os dados numa ordem predefinida, quanto a estruturas tens 1-2 bytes para um Unsigned Int 8/16 ou algo que suporte o maximo de elementos possível da ar ray da estrutura, o resto mandas seguido e tiras pela ordem no cliente.

Share this post


Link to post
Share on other sites

Eu não percebi ao certo o que ele queria mas pelo que fiquei a perceber depois duma conversa com ele isto é para um jogo online. Como lhe expliquei e gostava que ficasse publico para outras pessoas na mesma duvida lerem, eu nunca utilizaria JSON, dando serialize nos dados que o cliente actualizará e dando deserialize a nível do cliente, assim estas a mandar muito mais bytes do que é na realidade necessário (ponto n1), também é provável gastar mais tempo, recursos do que tendo uma estrutura que usarás como base, Header/Content, mandas os dados numa ordem predefinida, quanto a estruturas tens 1-2 bytes para um Unsigned Int 8/16 ou algo que suporte o maximo de elementos possível da ar ray da estrutura, o resto mandas seguido e tiras pela ordem no cliente.

A estrutura da informação não vai ser o factor decisivo na performance. Se é para um back-end gameserver, e performance é a prioridade máxima, então UDP é a solução. A estrutura da informação é, volto a dizer, "irrelevante"; header + X + Y é suficiente, e não seria JSON o bottleneck do processo.UDP é a solução porque TCP tem mais overhead (ack packets, etc), tens é de ter em conta que nem todos os packets enviados por UDP vão chegar ao destino, apesar de haver implementações muito boas em que a velocidade não compromete a fiabilidade.

Share this post


Link to post
Share on other sites

Agora sim fiquei esclarecido, obrigado aos dois.

 

Cumprimentos.

Share this post


Link to post
Share on other sites

A estrutura da informação não vai ser o factor decisivo na performance. Se é para um back-end gameserver, e performance é a prioridade máxima, então UDP é a solução. A estrutura da informação é, volto a dizer, "irrelevante"; header + X + Y é suficiente, e não seria JSON o bottleneck do processo.UDP é a solução porque TCP tem mais overhead (ack packets, etc), tens é de ter em conta que nem todos os packets enviados por UDP vão chegar ao destino, apesar de haver implementações muito boas em que a velocidade não compromete a fiabilidade.

Foi o que eu expliquei ao NewWars por skype se bem me lembro, que para fazer algo do género teria de ser UDP devido à packet loss.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this