2016-05-09 17 views
0

良い一日、JSON認識できない文字エスケープ ':'

次のように私は、JSONのプロパティのPOSTをしています:

{"db.URL":"jdbc\:derby\:C\:\\Users\\Sasha\\unicentaopos-database;create\=true"} 

と例外を取得:Unrecognized character escape ':' (code 58)\n at [Source: [email protected]; line: 1, column: 480]

は今、私は私の推測\\\に置き換える必要がありますが、それを行うときはいつでも:

jsonString = jsonString.replaceAll("\\", "\\\\"); 

は、私は別の例外を取得:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 
\ 
^ 
    at java.util.regex.Pattern.error(Pattern.java:1955) 
    at java.util.regex.Pattern.compile(Pattern.java:1702) 
    at java.util.regex.Pattern.<init>(Pattern.java:1351) 
    at java.util.regex.Pattern.compile(Pattern.java:1028) 
    at java.lang.String.replaceAll(String.java:2223) 
    at com.openbravo.pos.forms.AppConfig.convertConfigToJson(AppConfig.java:332) 
    at com.openbravo.pos.forms.AppConfig.load(AppConfig.java:221) 
    at com.openbravo.pos.forms.AppConfig.init(AppConfig.java:141) 
    at com.openbravo.pos.forms.AppConfig.<init>(AppConfig.java:70) 
    at com.openbravo.pos.forms.AppConfig.GetAppConfig(AppConfig.java:78) 
    at com.openbravo.pos.forms.StartPOS$1.run(StartPOS.java:99) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

私はそれに対処するにはどうすればよいですか? ご協力いただきまして誠にありがとうございます。

+0

これにはあまりよく慣れていませんが、コロンや等号をエスケープする必要がありますか? –

+0

結論が出る前に、単一のバックスラッシュについて不平を言っていると思うので、コロンをエスケープしないように二重バックスラッシュで置き換える必要があります。 – Sasha

答えて

0

Propertiesファイルでは、=:をエスケープする必要がありますが、生のJavaでは必要ありません。

正しいエスケープは(私は信じている)のようになります。

"jdbc:derby:C:\\Users\\Sasha\\unicentaopos-database;create=true" 

はすなわち、あなただけesacpeする必要が\(および"もしあれば)。

+0

BTW - 'jdbc:derby:C:\\'あなたが意味するものです。 'jdbc'で始まるのは、それがデータベース接続であることを意味します。データベース接続文字列で 'C:\'を見つけることはほとんどありません。 – OldCurmudgeon

+0

これはまさに私がここでやろうとしていることです:jsonString = jsonString.replaceAll( "\\"、 "\\\\");しかし、例外を取得する – Sasha

+0

それは質問に関連していません、私はすでにシステムによって使用されている既存のファイルを読んでいます。 – Sasha

関連する問題