Javaプログラムがその出力をgeoJSONファイルに書き込もうとしています。以下のようなものが、次の正しいJSON文字列JSONArrayはgeoJSONに不要な引用符を追加します
"coordinates":[-105.93879779882633,36.29086585830942]
を生成
も
JSONArray coord = new JSONArray("["+obj.getLng()+","+obj.getLat()+"]");
point.put("coordinates", coord);
の作品しかし、私はまた私の出力に行(ポリゴン)を含むようにしたいと思います。これらは、結果の文字列は、私はJSONArrayに私のラインを定義する点のコレクションを読み取ろうとしています。この
"coordinates":[[-106.0,36.0],[-105.96856743366506,36.0],[-105.93713486733012,36.0]]
のようになりますように、座標の集合として定義されています。しかし、私が何をしても、最終的なJSON Stringには余分な引用符が付きます。何かのように
"coordinates":["[-106.0,36.0],[-105.96856743366506,36.0],[-105.93713486733012,36.0]"]
StringBuilderを使用して、座標値を保持したい文字列の正確な内容を作成しようとするとします。座標配列の配列を作成してJSONArrayコンストラクタに渡そうとすると、各座標ペアが引用符で囲まれてしまいます。
私の質問は、StringBuilderや他のメソッドを使用してJSONArrayを作成すると、この結果につながりますが、Stringを直接新しいJSONArrayコンストラクタに渡すのはなぜですか? JSONArrayコンストラクタは正しく
new JSONArray("["+obj.getLng()+","+obj.getLat()+"]");
を解釈完璧にできるようだが、私は
StringBuilder builder = new StringBuilder();
for (Obj obj : objs) {
builder.append("["+obj.getLng()+","+obj.getLat()+"]");
}
new JSONArray(builder.toString());
を言うとき、これは些細な問題のように思えるので、私の問題の解決策は、おそらく簡単ですが、私は希望離れて落ちます特にこれがなぜそうであるかを理解するのに役立ちます。
例:
{"coordinates":["[150,30],[160,40],[170,50]"]}
で
{"coordinates":[150,30]}
しかし
JSONObject lineString = new JSONObject();
String[] coords = {"["+150+","+30+"],["+160+","+40+"],["+170+","+50+"]"};
JSONArray coord = new JSONArray(coords);
lineString.put("coordinates", coord);
System.out.println(lineString.toString());
結果で
JSONObject point = new JSONObject();
JSONArray coord = new JSONArray("["+150+","+30+"]");
point.put("coordinates", coord);
System.out.println(point.toString());
結果 - > " [150,30]、[160,40]、[170,50] " <から [:
問題は、コード文字列配列({ "座標" を囲む二重引用符であります]})
?外側の括弧はどこですか?問題を特定できるように[MCVE](http://stackoverflow.com/help/mcve)を含めてください。 – shmosel
あなたの例はあなたの質問とは非常に異なっていますが、あなたが結果を得ている理由をかなり明白にしています。 – shmosel