1

Google マップのエンコードされたポリラインを ajax を使用してサーバーに送信し、データベースに保存しようとしています。それらを JSON で送信し、サーバー側でデコードします。問題は、ポリラインが長くなりすぎると、json_decode() 関数が json 文字列をデコードしなくなることです。投稿で ajax 呼び出しを行っていますが、ポリラインのエスケープなど、すでにいくつかのことを試しましたが、何も機能しません!

実際の JSON の例:

{"title":"a",
 "type":"custom",
 "POIS":["46","43"],
 "polylines":[{
    "points": "oot|H_bgd@rI{HjGkFz@_Ad@w@@eAxD~ClBpAxC`Ax@pAjAbCj@zA|@h@VqAr@wAdBeB|C}Bd@KfY}A",
    "levels": "PEFEFGEFFEEFGEFEFEP" 
 }]
}

機能しない JSON の例:

{"title":"a",
 "type":"custom",
  "POIS":["46","43"],
  "polylines":[{
     "points": "uip|Hc|nd@v@GXoC`TwJV?VPvAhElAxF^bHtHd@zDd@Hj@]jf@KpC@v@F^VOx@HK`De@~EsAdHaEzPyDpMw\zaAqCvJo@tCmDjLyDtNkKvZmD`MmDfNuDnMuA~D_BpDiEhHcF|GxAzEfHhOORvChGjBrEJHnHxOzC~EtDzCpAnBdAzBpc@|hAjJvU`IxPbGdLn@|AJFb@rApAlHF|@fAjGF|AGvGDvCv@rGhA|Fr@fCjA`DfAbCHM`AOzAn@jBzEvBrEbCxCtAnAtAp@|InCf@Dz@Kn@BlDn@`@`@fApCfAqATOh@AxAvAHjA`@E`@L`@b@hGxI|EvF~CmMHInGfF|@bBdCjGvElKrBjGz@bD`@bBjAnGnAdLXjFJpCDtLSlIiBj`@g@tOCjLBdBLnDh@tE`@d@|A|FhA~Fl@pE~CtI`FbMX`@\LZ@`@WbEuFrD_HxBhBrDnBlGfCjFnAX\B`@Gb@sArEE|@g@zDe@`H@x@F\pAdFCv@QZn@lA",
     "levels": "PFFEGEEFFEGEEEFFEFEGEEFFEEEFEEEFEFEGEEFEEEFFFEFEFEEEFEEEFEEFFEFEGEFFEFEFEFEEEFEFEEFFFEEFEFEFFEEGEEEFEEFEFEFEFEGEFEFEEGEEFEGEFEEGEEFEEFEEFEFP" 
  }]
}
4

1 に答える 1

1

あなたはあなたのpointsプロパティの特定の文字をエスケープする必要があります。

エンコードされたポリラインを"DpMw\zaA"ざっと見ると、文字列の約5分の1の位置に文字シーケンスがあることがわかります。

バックスラッシュはバックスラッシュでエスケープする必要があります。したがって、これは次のようになります。"DpMw\\zaA"

プロパティポイントは開始と終了の二重引用符で構成されているため、JSONでは二重引用符もエスケープする必要があります。

于 2011-04-12T12:05:04.943 に答える