Json

JSon é um formato leve para transporte de dados. Ele é usado principalmente na web, mas nada de impede dele ser utilizado em outros contextos

Bibliotecas para JSON

Há váeias bibliotecas para ler json por aí. Aqui as mais comuns serão listadas. Além disso, alguns exemplos serão dados.

Para alguns exemplos considere o seguinte que o seguinte arquivo json está guardado em teste.json

Ambiente Web

Já vem nos navegadores - JSON.parse

C/C++

JsonH

Esta biblioteca é simples e consiste apenas de dois arquivos: json.h e json.c

Exemplo:

#include <iostream>
#include <fstream>
#include <string>
#include <fstream>
 
#include <cstdio>
#include <cstring>
 
#include "json.h"
 
using namespace std;
 
void printType( json_value_s* );
 
int main( int argc, char **argv ){
    ifstream stream("teste.json");
 
    // le o stream e joga ele para fileContents
    char fileContents[65536];
    char line[1024];
 
    memset(fileContents, 0, sizeof(fileContents));
 
    while( stream.getline(line, sizeof(line) ) )
    {
        strcat(fileContents, line);
    }
    // termina de ler o stream
    // para o nosso exemplo poderia ser isso const char fileContents[] = "{ \"name\"\n : \"outro\" , \"type\" : \"string\" }";
 
    // assume que a leitura foi realizada com sucesso
    struct json_value_s* value = json_parse(fileContents, strlen(fileContents));
    struct json_object_s* object = 0;
 
    if (0 == value) {
        std::cout << "NULL";
        return 1;
      }
 
      if (json_type_object != value->type) {
      std::cout << "NON OBJECT";
        return 2;
      }
 
      object = (json_object_s*) value->payload;
      json_object_element_s *element = object->start;
 
      size_t sz = element->name->string_size;
      if( sz > 0 )
      {
        const char* name = (const char* )element->name->string;
 
        /* erro */
        json_string_s *valString = (json_string_s *) element->value->payload;
        std::cout << "objeto com nome " << name << " e valor " << (const char*)valString->string << std::endl;
      }
 
      element = element->next;
      sz = element->name->string_size;
      if( sz > 0 )
      {
        const char* name = (const char* )element->name->string;
 
        /* erro */
        json_string_s *valString = (json_string_s *) element->value->payload;
        std::cout << "objeto com nome " << name << " e valor " << (const char*)valString->string << std::endl;
      }
 
    return 0;
}

Link: http://www.duskborn.com/json-h/

FastJSON

xxxx

C#

xxx

Java

xxx

Python

Usando o módulo json que já vem embutido com o Python

#!/usr/bin/python
 
import json
 
if __name__ == "__main__":
    jsonFile = open("arquivojson", "r")
    contents = jsonFile.read()
    loaded = json.loads(contents)
    print loaded

Links

xxx

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.