Gremlin---導(dǎo)入json數(shù)據(jù)出現(xiàn)Illegal unquoted character

org.apache.tinkerpop.shaded.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 28)): has to be escaped using backslash to be included in string value
 at [Source: java.io.ByteArrayInputStream@60856961; line: 1, column: 381]
java.lang.RuntimeException: org.apache.tinkerpop.shaded.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 28)): has to be escaped using backslash to be included in string value
 at [Source: java.io.ByteArrayInputStream@60856961; line: 1, column: 381]
        at org.apache.tinkerpop.gremlin.util.function.FunctionUtils.lambda$wrapFunction$0(FunctionUtils.java:40)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader.readGraph(GraphSONReader.java:104)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo.readGraph(GraphSONIo.java:96)
        at com.jd.jr.graph.data.JsonVerifyTest$$anonfun$1.apply$mcV$sp(JsonVerifyTest.scala:18)
        at com.jd.jr.graph.data.JsonVerifyTest$$anonfun$1.apply(JsonVerifyTest.scala:16)
        at com.jd.jr.graph.data.JsonVerifyTest$$anonfun$1.apply(JsonVerifyTest.scala:16)
        at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
        at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
        at org.scalatest.Transformer.apply(Transformer.scala:22)
        at org.scalatest.Transformer.apply(Transformer.scala:20)
        at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1682)
        at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
        at org.scalatest.FlatSpec.withFixture(FlatSpec.scala:1685)
        at org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1679)
        at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692)
        at org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692)
        at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
        at org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike.scala:1692)
        at org.scalatest.FlatSpec.runTest(FlatSpec.scala:1685)
        at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750)
        at org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750)
        at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396)
        at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
        at scala.collection.immutable.List.foreach(List.scala:392)
        at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
        at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:373)
        at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:410)
        at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384)
        at scala.collection.immutable.List.foreach(List.scala:392)
        at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384)
        at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379)
        at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461)
        at org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1750)
        at org.scalatest.FlatSpec.runTests(FlatSpec.scala:1685)
        at org.scalatest.Suite$class.run(Suite.scala:1147)
        at org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1685)
        at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795)
        at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795)
        at org.scalatest.SuperEngine.runImpl(Engine.scala:521)
        at org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1795)
        at org.scalatest.FlatSpec.run(FlatSpec.scala:1685)
        at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)
        at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1340)
        at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1334)
        at scala.collection.immutable.List.foreach(List.scala:392)
        at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1334)
        at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011)
        at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010)
        at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1500)
        at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010)
        at org.scalatest.tools.Runner$.run(Runner.scala:850)
        at org.scalatest.tools.Runner.run(Runner.scala)
        at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)
        at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)
Caused by: org.apache.tinkerpop.shaded.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 28)): has to be escaped using backslash to be included in string value
 at [Source: java.io.ByteArrayInputStream@60856961; line: 1, column: 381]
        at org.apache.tinkerpop.shaded.jackson.core.JsonParser._constructError(JsonParser.java:1702)
        at org.apache.tinkerpop.shaded.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558)
        at org.apache.tinkerpop.shaded.jackson.core.base.ParserMinimalBase._throwUnquotedSpace(ParserMinimalBase.java:522)
        at org.apache.tinkerpop.shaded.jackson.core.json.UTF8StreamJsonParser._finishString2(UTF8StreamJsonParser.java:2540)
        at org.apache.tinkerpop.shaded.jackson.core.json.UTF8StreamJsonParser._finishAndReturnString(UTF8StreamJsonParser.java:2469)
        at org.apache.tinkerpop.shaded.jackson.core.json.UTF8StreamJsonParser.getText(UTF8StreamJsonParser.java:315)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:513)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:637)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:495)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapArray(UntypedObjectDeserializer.java:586)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:509)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.mapObject(UntypedObjectDeserializer.java:652)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserialize(UntypedObjectDeserializer.java:495)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:517)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:362)
        at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:27)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3798)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2915)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader.readVertex(GraphSONReader.java:176)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader.lambda$readGraph$0(GraphSONReader.java:104)
        at org.apache.tinkerpop.gremlin.util.function.FunctionUtils.lambda$wrapFunction$0(FunctionUtils.java:36)
        ... 62 more

  • 原因是導(dǎo)入json中存在Ascii碼值為32(十進制)以下的控制字符,如換行缰猴、文件分隔符等氛琢,需要將其替換掉喊递。

  • 如下存在文件控制符FS,其是不可見字符阳似,但是有些軟件打開時因為其使用的編碼原因會顯示成一些奇怪字符册舞。文件控制符Ascill的10進制值為28,16進制值為1C


    image.png
  • 解決: 通過正則表達式將json中的控制符(ascill編碼低于32的字符)替換掉

val inputJsonData ="graph_importer/src/test/resources/proddata.json"
 val outJsonData ="graph_importer/src/test/resources/outData.json"

     "Content" should "  valid" in{

   val invalidCharReg ="""[\u0000-\u001F]+"""
   val source = Source.fromFile(inputJsonData,"UTF-8");
   val lineIterator = source.getLines();
   val out = new PrintWriter(outJsonData)

   for( line <- lineIterator ){
     var old = line.mkString
     old = old.replaceAll(invalidCharReg,"")
     out.println(old)
   }
   out.close()
 }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末障般,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盛杰,更是在濱河造成了極大的恐慌挽荡,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件即供,死亡現(xiàn)場離奇詭異定拟,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門青自,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株依,“玉大人,你說我怎么就攤上這事延窜×低螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵逆瑞,是天一觀的道長荠藤。 經(jīng)常有香客問我,道長获高,這世上最難降的妖魔是什么哈肖? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮念秧,結(jié)果婚禮上淤井,老公的妹妹穿的比我還像新娘。我一直安慰自己摊趾,他們只是感情好币狠,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著严就,像睡著了一般总寻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梢为,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天渐行,我揣著相機與錄音,去河邊找鬼铸董。 笑死祟印,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的粟害。 我是一名探鬼主播蕴忆,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悲幅!你這毒婦竟也來了套鹅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤汰具,失蹤者是張志新(化名)和其女友劉穎卓鹿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體留荔,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡吟孙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杰妓。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡藻治,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巷挥,到底是詐尸還是另有隱情桩卵,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布句各,位于F島的核電站吸占,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凿宾。R本人自食惡果不足惜矾屯,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初厚。 院中可真熱鬧件蚕,春花似錦、人聲如沸产禾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亚情。三九已至妄痪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楞件,已是汗流浹背衫生。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留土浸,地道東北人罪针。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像黄伊,于是被迫代替她去往敵國和親泪酱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容