14
Help us understand the problem. What are the problem?

posted at

updated at

Java で Json を標準ライブラリだけで処理したいときに使うコード

ポイント
JVM標準で使えるライブラリにJavaScriptのエンジンがありますので、それを利用します。

【追記1】
↓こちらに改良版があります。
Java で Json を標準ライブラリだけで処理したいときに使うコード(改良版)gson 不要
https://qiita.com/oyahiroki/items/006b3511fc4136d02ad1

【追記2】
Java 17では Script Engine の除外にともない、この技は利用できません.
まあこの記事が必要な方はもうしばらく Java 8 だと思いますが。。

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;
		}
	}
	// 使い方 / 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);
		}

	}

}


出力結果

this is test
value3

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
14
Help us understand the problem. What are the problem?