Não é certo, porque eu queria criar objeto json a partir de json string, a resposta dada por dogbane mostrou o caminho certo para responder.
Sr. Sajid Shaikh
As duas respostas do Mappan e dogbane estão corretas, mas estão usando módulos diferentes. Você deve ter cuidado para importar o módulo correto para cada um, porque existem muitos módulos JSONObject.
Arashsoft
Eu tentei com a biblioteca GSON. Por favor, verifique este link .
E você pode mencionar qual pacote importar para o mesmo?
GonePhishing
10
Isso está funcionando para mim com:import org.json.simple.JSONObject
Mafro34
1
A versão 1.1.1 do json-simple parece ter algum problema. A descrição acima fornece "Exceção não tratada" para parser.parse(e quer tentar pegar ou jogar. Porém, quando você adiciona uma delas, Unhandled exception type ParseExceptionocorre um erro ou um erro NoClassDefFound para ParseException, org.json.simple.parsermesmo quando você possui json-simple nas depedências do Maven e é claramente visível na biblioteca do projeto.
21616 Juha Untinen
2
org.json é uma biblioteca de prova de conceito. é um dos piores em termos de desempenho e recursos. Deve-se examinar o conjunto de recursos e o desempenho de uma json lib antes de escolher. Veja este benchmark que fiz usando o JMH: github.com/fabienrenaud/java-json-benchmark Ele mostra claramente o jackson mais rapidamente do que qualquer outra coisa e 5 a 6 vezes mais rápido que o org.json.
precisa
5
Analisador JSONParser = new JSONParser (); parece privado
"Se você está pedindo para processar no lado do cliente, isso depende da sua linguagem de programação. Por exemplo, com Java, você pode usar o google-gson" Eu acho que você provavelmente quis dizer "servidor" em vez de "cliente" lá. E ele marcou sua pergunta como "Java".
TJ Crowder
+1. Eu usei o Gson em 4-5 projetos agora, em contextos bastante diferentes, no lado do servidor e do cliente (também no aplicativo Android), e isso nunca me falhou. Lib muito agradável e limpo.
31413 Jonik
Se você deseja usar o gson, mas não tem uma classe POJO predefinida (ou seja, você tem um json genérico sem uma estrutura definida), esta resposta pode ajudar - stackoverflow.com/questions/4110664/…
Leandro David
40
Existem vários serializadores e desserializadores Java JSON vinculados na página inicial do JSON .
Até o momento da redação deste artigo, existem 22:
No entanto, acho que sua pergunta é mais como: Como finalizar com um objeto JSONObject real de uma String JSON.
Eu estava olhando para a API do google-json e não consegui encontrar nada tão direto quanto a API do org.json, que provavelmente é o que você deseja usar se precisar muito de usar um JSONObject de barebones.
Eu acho que a beleza do google-gson é que você não precisa lidar com o JSONObject. Você apenas pega json, passa a classe para a desserialização e seus atributos de classe serão compatíveis com o JSON, mas, novamente, todo mundo tem seus próprios requisitos, talvez você não possa se dar ao luxo de ter aulas pré-mapeadas. o lado de desserialização porque as coisas podem ser muito dinâmicas no lado Gerando JSON. Nesse caso, basta usar o json.org.
(2) Converter string JSON em objeto JSON (JsonNode)
publicstaticJsonNode stringToJSONObject(String jsonString)throwsException{ObjectMapper jacksonObjMapper =newObjectMapper();return jacksonObjMapper.readTree(jsonString);}//Example:String jsonString ="{\"phonetype\":\"N95\",\"cat\":\"WP\"}";JsonNode jsonNode = stringToJSONObject(jsonString);Assert.assertEquals("Phonetype value not legit!","N95", jsonNode.get("phonetype").getTextValue());Assert.assertEquals("Cat value is tragic!","WP", jsonNode.get("cat").getTextValue());
Observe que o GSON com a desserialização de uma interface resultará em exceção, como abaixo.
"java.lang.RuntimeException: Unable to invoke no-args constructor for interface XXX. Register an InstanceCreator with Gson for this type may fix this problem."
Enquanto desserializar; O GSON não sabe qual objeto deve ser intantado para essa interface.
Agora objé a sua JSONObjectforma convertida da sua respectiva String. Isso acontece se você tiver pares nome-valor.
Para uma sequência, você pode passar diretamente para o construtor de JSONObject. Se for válido json String, tudo bem, caso contrário, lançará uma exceção.
Respostas:
Usando a biblioteca org.json :
fonte
JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject();
Para quem ainda procura uma resposta:
fonte
import org.json.simple.JSONObject
parser.parse(
e quer tentar pegar ou jogar. Porém, quando você adiciona uma delas,Unhandled exception type ParseException
ocorre um erro ou um erro NoClassDefFound para ParseException,org.json.simple.parser
mesmo quando você possui json-simple nas depedências do Maven e é claramente visível na biblioteca do projeto.Você pode usar
google-gson
. Detalhes:Exemplos de Objetos
(Serialização)
Observe que você não pode serializar objetos com referências circulares, pois isso resultará em recursão infinita.
(Desserialização)
Outro exemplo para o Gson:
O Gson é fácil de aprender e implementar, você precisa saber os dois métodos a seguir:
-> toJson () - converte objeto java para o formato JSON
-> fromJson () - converte JSON em objeto java
Resultado
Recursos:
Página inicial do projeto Google Gson
Guia do usuário do Gson
Exemplo
fonte
Existem vários serializadores e desserializadores Java JSON vinculados na página inicial do JSON .
Até o momento da redação deste artigo, existem 22:
... mas é claro que a lista pode mudar.
fonte
Solução Java 7
;
fonte
Para converter
String
paraJSONObject
você, basta passar aString
instância para o Construtor deJSONObject
.Por exemplo:
fonte
Eu gosto de usar o google-gson para isso, e é precisamente porque não preciso trabalhar diretamente com o JSONObject.
Nesse caso, eu teria uma classe que corresponderá às propriedades do seu objeto JSON
No entanto, acho que sua pergunta é mais como: Como finalizar com um objeto JSONObject real de uma String JSON.
Eu estava olhando para a API do google-json e não consegui encontrar nada tão direto quanto a API do org.json, que provavelmente é o que você deseja usar se precisar muito de usar um JSONObject de barebones.
http://www.json.org/javadoc/org/json/JSONObject.html
Com org.json.JSONObject (outra API completamente diferente) Se você quiser fazer algo como ...
Eu acho que a beleza do google-gson é que você não precisa lidar com o JSONObject. Você apenas pega json, passa a classe para a desserialização e seus atributos de classe serão compatíveis com o JSON, mas, novamente, todo mundo tem seus próprios requisitos, talvez você não possa se dar ao luxo de ter aulas pré-mapeadas. o lado de desserialização porque as coisas podem ser muito dinâmicas no lado Gerando JSON. Nesse caso, basta usar o json.org.
fonte
você deve importar o org.json
fonte
Cadeia de caracteres para JSON usando
Jackson
comcom.fasterxml.jackson.databind
:Supondo que sua string json represente assim: jsonString = {"phonetype": "N95", "cat": "WP"}
fonte
Se você estiver usando http://json-lib.sourceforge.net (net.sf.json.JSONObject)
é bem fácil:
ou
obtenha os valores com json.getString (param), json.getInt (param) e assim por diante.
fonte
Converter uma string em json e a picada é como json. {"phonetype": "N95", "cat": "WP"}
fonte
Use JsonNode do mais rápidoxml para a análise genérica de Json. Cria internamente um Mapa de valor-chave para todas as entradas.
Exemplo:
string de entrada:
fonte
Não há necessidade de usar nenhuma biblioteca externa.
Em vez disso, você pode usar esta classe :) (lida com listas pares, listas aninhadas e json)
Para converter sua string JSON em hashmap, use este:
fonte
Codehaus Jackson - eu sou essa API incrível desde 2012 para meus serviços RESTful web e JUnit. Com a API deles, você pode:
(1) Converta String JSON em Java bean
(2) Converter string JSON em objeto JSON (JsonNode)
(3) Converter Java bean em JSON String
REFS:
Codehaus Jackson
API JsonNode - Como usar, navegar, analisar e avaliar valores de um objeto JsonNode
Tutorial - Tutorial simples de como usar o Jackson para converter a string JSON em JsonNode
fonte
Observe que o GSON com a desserialização de uma interface resultará em exceção, como abaixo.
Enquanto desserializar; O GSON não sabe qual objeto deve ser intantado para essa interface.
Isso é resolvido de alguma forma aqui .
No entanto, o FlexJSON tem essa solução inerentemente. enquanto serializa o tempo, ele adiciona o nome da classe como parte do json, como abaixo.
Então, o JSON será um pouco pesado; mas você não precisa escrever, o
InstanceCreator
que é necessário no GSON.fonte
Usando org.json
Se você tiver uma String contendo texto no formato JSON, poderá obter o JSON Object seguindo as etapas:
Agora, para acessar o tipo de telefone
fonte
Para definir json único objeto para listar ie
para dentro
List<Location>
usar
jackson.mapper-asl-1.9.7.jar
fonte
fonte
Melhor Vá de maneira mais simples usando
org.json
lib. Basta fazer uma abordagem muito simples como abaixo:Agora
obj
é a suaJSONObject
forma convertida da sua respectiva String. Isso acontece se você tiver pares nome-valor.Para uma sequência, você pode passar diretamente para o construtor de
JSONObject
. Se for válidojson String
, tudo bem, caso contrário, lançará uma exceção.fonte
user.put("email", "[email protected]")
desencadeia uma exceção não tratada.try {JSONObject jObj = new JSONObject();} catch (JSONException e) {Log.e("MYAPP", "unexpected JSON exception", e);// Do something to recover.}