É possivel ter uma saída no padrão jSon no java sem baixar api?
Pretendo imprimir um array no padrão jSon, o array é de objetos e foram armazenados em pares.
Tipo: new objeto(Chave, Valor);
Gostaria de imprimir sem ter que importar API externa ou seja somente com recursos do java 8
Até onde conheço, não. Todas as soluções que conheço fazem uso de uma dependência que precisa ser adicionada ao projeto.
Há uma JSR que especifica como trabalhar com JSON em java (https://javaee.github.io/jsonp/index.html), porém, vc ainda precisa adicionar as dependencias no seu projeto (ou usar algum servidor que já tenha) para poder usá-la.
É para web? Se sim, a partir do Java EE 7 vc pode usar a API que o @Lucas_Camara disse, além de também existir uma versão com binding a partir o Java/Jakarta EE 8. Não é necessário se for para web, nas versões do perfil Web do Java EE que mencionei.
Alguns trechos para vc testar.
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonValue;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.Jsonb;
//...
// criando um objeto genérico (Java EE 7)
JsonObject jo = Json.createObjectBuilder()
.add( "nome", "david" )
.add( "sobrenome", "buzatto" )
.build();
System.out.println( jo );
// lendo um array de objetos genéricos (Java EE 7)
JsonReader jsr = Json.createReader(
new StringReader( String.format(
"[ %s, %s, %s ]", jo, jo, jo ) ) );
for ( JsonValue jsv : jsr.readArray() ) {
JsonObject jso = jsv.asJsonObject();
System.out.println( "Nome: " + jso.getString( "nome" ) );
System.out.println( "Nome: " + jso.getString( "sobrenome" ) );
}
// processando objetos com json-b e gerando JSON (Java/Jakarta EE 8)
Jsonb jb = JsonbBuilder.create();
List<Pessoa> pessoas = new ArrayList<>();
// adicione algumas pessoas na lista
// saída
System.out.println( jb.toJson( pessoas ) );
Se não for para Web e for usar uma biblioteca, acho a Gson do Google MUITO boa.
Na Universidade que estou fazendo o professor falou que não precisa de pacote , que dar pra fazer somente manipulando string, não entendi muito bem como seria porem implementei um metodo toJson() que percorre um array de objetos e imprime quase igual , mas saiu com a virgula no final.
O array de objetos foi adicionado em pares chave e valor ou seja
new object(chave,valor)
Se alguem souber uma maneira de imprimir sem a vírgula no final agradeço, pois ia ficar no padrão jSon. Mas sem pacotes adicionais , somente com o java manipulando String.
Eu até entendo que, como um exercício, pode até ser interessante tentar criar um JSON manualmente, só manipulando a string.
Mas na prática, em projetos reais, prefira usar bibliotecas prontas. Até porque um JSON é bem mais complicado e pode ter vários casos “especiais” para tratar.
Por exemplo, se o valor tiver aspas, você precisará fazer o escape com \:
// isso é um JSON válido
{ "chave": "valor \"entre aspas\" precisa do escape"}
// mas isso é um JSON inválido, porque as aspas precisam do escape
{ "chave": "valor "entre aspas" precisa do escape"}
Como é só um exercício, provavelmente querem que vc faça tudo na mão (e talvez a ideia seja exercitar o uso dos métodos da string, mais do que construir um JSON em si, sei lá). Para fins didáticos, eu entendo que pode ser interessante, mas - reforçando - em projetos reais, o melhor é usar bibliotecas prontas para tal.
Tem sim, basta você mesmo implementar o motor do JSON.
E isso não é difícil, se tem tempo e não precisa ficar correndo atras de dinheiro pra pagar as contas, trata-se de um projetinho bem legal pra se divertir, então boa diversão !!!.