繁体   English   中英

Java 8 Nashorm引擎无法从json对象获取密钥

[英]Java 8 Nashorm engine not able to fetch key from json object

我正在尝试在nashorn引擎中存储JSON对象并通过键获取值。

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.put("minimumBet", "{\"SEK\":\"1\",\"EUR\":\"2\"}");

//This prints {"SEK":"1","EUR":"2"}
System.out.println(engine.eval("minimumBet")); 

//This assert fails
//engine.eval("minimumBet['SEK']") is retruning null
assertEquals(1, engine.eval("minimumBet['SEK']"));

请告诉我我想念的是什么。

engine.put(“ minimumBet”,“ {\\” SEK \\“:\\” 1 \\“,\\” EUR \\“:\\” 2 \\“}”)); 不评估您放置在属性中的值,因此您只是设置一个字符串。 您需要评估引擎内部的字符串。

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

public class Test {
    public static void main(String[] args) {
        try {
            ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
            engine.put("minimumBet", "{\"SEK\":1,\"EUR\":2}");
            engine.eval("var bet = JSON.parse(minimumBet);");
            engine.eval("var krona = bet['SEK'];");
            engine.eval("var euro = bet['EUR'];");
            Object krona = engine.get("krona");
            Object euro = engine.get("euro");
            System.out.println(krona + " " + krona.getClass());
            System.out.println(euro + " " + euro.getClass());
        } catch (ScriptException ex) {
            ex.printStackTrace();
        }
    }
}

产量:

1 class java.lang.Integer
2 class java.lang.Integer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM