Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard

point Il existe un moteur JavaScript dans la bibliothèque fournie avec la JVM, alors utilisez-le.

[Une addition] ↓ Il existe une version améliorée ici. Code utilisé lorsque vous souhaitez traiter Json avec uniquement des bibliothèques standard en Java (version améliorée) gson inutile https://qiita.com/oyahiroki/items/006b3511fc4136d02ad1

package script;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JsonUtil {

	public static Object get(String json, String code) {
		// Get the JavaScript engine
		ScriptEngineManager manager = new ScriptEngineManager();
		ScriptEngine engine = manager.getEngineByName("JavaScript");
		String script = "var obj = " + json + ";";
		try {
			engine.eval(script);
			{
				return engine.eval("obj." + code);
			}
		} catch (ScriptException e) {
			e.printStackTrace();
			return null;
		}
	}
	//Comment utiliser/ How to use
	public static void main(String[] args) {
		String json = "{'test':'this is test','test2':{'test3':'value3'}}";

		{
			Object value = JsonUtil.get(json, "test");
			System.out.println(value);
		}
		{
			Object value = JsonUtil.get(json, "test2.test3");
			System.out.println(value);
		}

	}

}


Résultat de sortie

this is test
value3

Recommended Posts

Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard
Code utilisé lorsque vous souhaitez traiter Json avec uniquement des bibliothèques standard en Java (version améliorée) gson inutile
Lorsque vous souhaitez implémenter des tests de bibliothèque Java avec Spock en multi-module avec Gradle dans Android Studio 3
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
[Java] Utiliser la technologie cryptographique avec les bibliothèques standard
Code pour échapper aux chaînes JSON en Java
Lorsque vous souhaitez lier InputStream dans JDBI3
Je veux utiliser java8 forEach avec index
Une note quand vous voulez Tuple en Java
Lorsque vous souhaitez utiliser la méthode à l'extérieur
[Swift] Utilisez nonzeroBitCount lorsque vous voulez popcnt dans Swift
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
[Java] Comment chiffrer avec le chiffrement AES avec une bibliothèque standard
Si vous souhaitez utiliser Mockito avec Kotlin, utilisez mockito-kotlin
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Comment utiliser les données JSON dans la communication WebSocket (Java, JavaScript)
Lorsque vous souhaitez écrire explicitement OR ou AND avec ransack
Éléments à prendre en compte lors de l'écriture de code en Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
docker-compose.yml lorsque vous voulez garder mysql en cours d'exécution avec docker
lombok.config lorsque vous voulez passer @Qualifier à @RequiredArgsConstructor avec lombok
Delicate est pratique à utiliser lorsque vous souhaitez réutiliser des pièces
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
[Ruby + Rails] Lorsque vous souhaitez vous inscrire dans la liste de diffusion de Mailchimp avec l'enregistrement de l'utilisateur
Comment écrire dans la classe Model lorsque vous souhaitez enregistrer des données binaires dans DB avec PlayFramework
ProxyFactory est pratique lorsque vous souhaitez tester AOP avec Spring!
Utiliser Microsoft Graph avec Java standard
Paramètres pour supprimer les importations Java inutilisées lors de l'enregistrement avec VS Code
Comment utiliser les classes en Java?
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Utilisez-vous Stream en Java?
[Mots qui m'ont été écrits lorsque j'étais en première année ⑦] Ce que je veux que vous incluiez au moins avec l'extension Visual Studio Code
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
Lorsque vous souhaitez que Rails désactive une session pour un contrôleur spécifique
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
Résumé des moyens lorsque vous souhaitez communiquer avec HTTP sur Android
(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je veux ForEach un tableau avec une expression Lambda en Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
[JaCoCo (Java Code Coverage)] Utilisation avec NetBeans
Gérez d'énormes JSON avec Java Lambda
Je veux utiliser @Autowired dans Servlet
Essayez d'ajouter du texte à une image avec Scala en utilisant la bibliothèque standard de Java
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
Vous pouvez ne pas vouloir utiliser la méthode remove sur ArrayList très souvent
Lorsque vous souhaitez notifier une erreur quelque part lors de l'utilisation de graphql-spring-boot avec Spring Boot
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
Résumé en essayant d'utiliser Solr en Java et en obtenant une erreur (Solr 6.x)
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
Je souhaite envoyer un e-mail en Java.
Analyse de code statique par Checkstyle avec Java + Gradle
Avec Tomcat, vous pouvez utiliser des espaces réservés ($ {...}) dans web.xml.
Vous utilisez le contexte pour utiliser MDC avec Spring WebFlux