Code, der verwendet werden soll, wenn Sie Json nur mit Standardbibliotheken in Java verarbeiten möchten

Punkt In der Bibliothek, die mit der JVM geliefert wird, befindet sich eine JavaScript-Engine. Verwenden Sie diese.

[Zusatz] ↓ Hier gibt es eine verbesserte Version. Code, der verwendet wird, wenn Sie Json nur mit Standardbibliotheken in Java (verbesserte Version) verarbeiten möchten. Gson ist nicht erforderlich 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;
		}
	}
	//Wie benutzt man/ 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);
		}

	}

}


Ausgabeergebnis

this is test
value3

Recommended Posts

Code, der verwendet werden soll, wenn Sie Json nur mit Standardbibliotheken in Java verarbeiten möchten
Code, der verwendet wird, wenn Sie Json nur mit Standardbibliotheken in Java (verbesserte Version) verarbeiten möchten. Gson ist nicht erforderlich
Wenn Sie Java-Bibliothekstests mit Spock in mehreren Modulen mit Gradle in Android Studio 3 implementieren möchten
Wenn Sie Annotation in Java 8 dynamisch ersetzen möchten
Verwenden Sie JLine, wenn Sie Tastenanschläge auf der Konsole zeichenweise in Java verarbeiten möchten
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Wenn Sie InputStream in JDBI3 binden möchten
Ich möchte Java8 für jeden mit Index verwenden
Ein Hinweis, wenn Sie Tupel in Java möchten
Wenn Sie die Methode außerhalb verwenden möchten
[Swift] Verwenden Sie nonzeroBitCount, wenn Sie in Swift popcnt möchten
Das erste, was Sie tun müssen, wenn Sie mit Heroku auf GitHub mit Eclipse auf Java zufrieden sein möchten
Verwendung der Z3-Bibliothek in Scala mit Eclipse
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
[Java] Verschlüsselung mit AES-Verschlüsselung mit Standardbibliothek
Wenn Sie Mockito mit Kotlin verwenden möchten, verwenden Sie Mockito-Kotlin
Verwendung der JDD-Bibliothek in Scala mit Eclipse
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
Wenn Sie explizit ODER oder UND mit Ransack schreiben möchten
Dinge, die Sie beim Schreiben von Code in Java beachten sollten
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
docker-compose.yml, wenn Sie MySQL auf Docker laufen lassen möchten
lombok.config, wenn Sie @Qualifier mit lombok an @RequiredArgsConstructor übergeben möchten
Delicate ist praktisch, wenn Sie Teile wiederverwenden möchten
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
[Ruby + Rails] Wenn Sie sich zusammen mit der Benutzerregistrierung in der Mailchimp-Mailingliste registrieren möchten
So schreiben Sie in die Modellklasse, wenn Sie mit PlayFramework Binärdaten in der Datenbank speichern möchten
ProxyFactory ist praktisch, wenn Sie AOP mit Spring testen möchten!
Verwenden Sie Microsoft Graph mit Standard-Java
Einstellungen zum Löschen nicht verwendeter Java-Importe beim Speichern mit VS-Code
Wie verwende ich Klassen in Java?
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Verwenden Sie Stream in Java?
[Wörter, die mir geschrieben wurden, als ich in der ersten Klasse war ⑦] Was ich möchte, dass Sie zumindest in die Visual Studio Code-Erweiterung aufnehmen
[RSpec] Wenn Sie die Instanzvariable des Controllers im Test verwenden möchten [Zuweisungen wird nicht empfohlen]
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Wenn Rails eine Sitzung für einen bestimmten Controller deaktivieren soll
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Zusammenfassung der Mittel, wenn Sie mit HTTP unter Android kommunizieren möchten
(Beschränkt auf Java 7 oder höher) Ich möchte, dass Sie Objekte in Objects.equals vergleichen
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
[JaCoCo (Java Code Coverage)] Verwendung mit NetBeans
Behandeln Sie große JSON mit Java Lambda
Ich möchte @Autowired in Servlet verwenden
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
Möglicherweise möchten Sie die Methode remove in ArrayList nicht sehr oft verwenden
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Ich möchte, dass Sie Scala vorerst als besseres Java verwenden
Zusammenfassung beim Versuch, Solr in Java zu verwenden und eine Fehlermeldung zu erhalten (Solr 6.x)
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
Ich möchte eine E-Mail in Java senden.
Führen Sie eine statische Code-Analyse mit Checkstyle mit Java + Gradle durch
Mit Tomcat können Sie Platzhalter ($ {...}) in web.xml verwenden.
Sie verwenden den Kontext, um MDC mit Spring WebFlux zu verwenden