2016-11-15 14 views
-1

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] " <から [

問題は、コード文字列配列({ "座標" を囲む二重引用符であります]})

+0

?外側の括弧はどこですか?問題を特定できるように[MCVE](http://stackoverflow.com/help/mcve)を含めてください。 – shmosel

+0

あなたの例はあなたの質問とは非常に異なっていますが、あなたが結果を得ている理由をかなり明白にしています。 – shmosel

答えて

1

coordsは、JSONArray である必要があります。文字列はです。

余分な引用符はありません。 1つの文字列のリストを作成しました。だからあなたの最初の例と一致しているようだ、それが正しいので、あなたは別の事をやっているので、私は混乱を見ない

String coords = "["+150+","+30+"]"; 
JSONArray coordArray = new JSONArray(coords); 

よう

とにかく、JSONArrayメソッドを使用して、文字列連結を行うのではなく、配列を作成することをお勧めします。

0

サンプルでは、​​JSONArrayには他にも多くのJSONArrayが含まれています。 したがって、コードを適切に記述する必要があります。

例えば:あなたはカンマを追加している

JSONArray cooord = new JSONArray();  
for (Obj obj : objs) { 
    JSONArray temp = new JSONArray(); 
    temp.put(obj.getLng()); 
    temp.put(obj.getLat()+); 

    cooord.put(temp); 
} 

System.out.println(cooord); 
関連する問題