2015-02-11 56 views
0

我有这样的代码:'的RTServer-id`转向'的RTServer - id`在java字符串处理

public void foo(){ 
     String script = 
       "var aLocation = {};" + 
         "var aOffer = {};" + 

         "var aAdData = " + 
         "{ " + 
         "location: aLocation, " + 
         "offer: aOffer " + 
         " };" + 

         "var aClientEnv = " + 
         " { " + 
         " sessionid:  \"\", " + 
         " cookie:  \"\", " + 
         " rtserver-id: 1, " + 
         "  lon:   34.847, " + 
         "  lat:   32.123, " + 
         "  venue:   \"\", " + 
         " venue_context: \"\", " + 

         " source:  \"\"," + // One of the following (string) values: ADS_PIN_INFO, 
         // ADS_0SPEED_INFO, ADS_LINE_SEARCH_INFO, 
         // ADS_ARROW_NEARBY_INFO, ADS_CATEGORY_AUTOCOMPLETE_INFO, 
         // ADS_HISTORY_LIST_INFO 
         // (this field is also called "channel") 

         " locale:  \"\"" + // ISO639-1 language code (2-5 characters), supported formats: 
         " };" + 


         "W.setOffer(aAdData, aClientEnv);"; 

      javascriptExecutor.executeScript(script); 
} 

我有两个问题:

  1. 当我调试,并复制script值我看到一个会员rtserver - id而不是rtserver-id 怎么可能?该代码因此抛出异常。

即使我删除此rtserver-id成员(并没有抛出的异常)

我在这个浏览器控制台评估aLocation并获得"variable not defined"。怎么会这样?

enter image description here

+2

我不希望'rtserver-id'成为一个有效的标识符。你确定这实际上与Java有什么关系?如果您只是想要有效的JSON,请尝试将它放在引号中......如果您在演示问题是将脚本转移到Javascript执行程序还是其他内容后显示* minimal *示例,这将会很有帮助。 – 2015-02-11 12:53:45

+0

我会试试。但我怎么能解释,即使没有这个问题的成员,我仍然无法通过浏览器控制台访问这些变量? – 2015-02-11 14:26:44

回答

2

rtserver-id是不是有效的标识符 - 因此,如果你想把它当作一个字段/属性的名称,需要引用它。您可以在Chrome的JavaScript控制台,而无需任何Java参与:

> var aClientEnv = { sessionId: "", rtserver-id: 1 }; 

Uncaught SyntaxError: Unexpected token -

> var aClientEnv = { sessionId: "", "rtserver-id": 1 }; 

undefined

> aClientEnv 

Object {sessionId: "", rtserver-id: 1}

基本上我不认为任何的增加空间 - 你刚刚得到一个无效的脚本。您可以在Java代码中轻松添加引号:

" \"rtserver-id\": 1, " + 
+0

我会尽力的。但我怎么能解释,即使没有这个问题的成员,我仍然无法通过浏览器控制台访问这些变量? – 2015-02-11 14:26:22

+0

@EladBenda:我不清楚你的意思,但这听起来像是一个完全独立的问题,与你最初提出的错误没有任何关系。 (我完全不清楚你是如何运行这个代码的。) – 2015-02-11 14:28:36