web-dev-qa-db-ja.com

JSONArray出力から引用を削除します

呼び出しが成功すると、「objects」というキーを持つJSONArrayと、「name」というキーを持つtestValueが返されます。出力は次のようになります。

"Abcd"
"Wxyz"

私のコードは次のとおりです:

public void onSuccess(JSONValue val) {
    JSONObject obj = val.isObject();
    JSONArray test = JSONUtil.getJSONArray(test, "objects");
    for (int i = 0; i < test.size(); i++) {
        JSONObject childJSONObject = (JSONObject) test.get(i);
        JSONValue testValue = childJSONObject.get("name");
        System.out.println(testValue);
    }
}

次のように名前を印刷したい:(二重引用符なし)

Abcd
Wxyz
8
Ask

1。replaceAll()

_testValue.toString().replaceAll("\"", "");
_

このメソッドは、最初と最後ではなく、名前に存在するすべての二重引用符を置き換えます。

例: "Abcd"はAbcdになりますが、名前が "Ab" cd "の場合、要件に応じてAb" cdになりますが、Abcdになります。二重引用符がすべて置き換えられたことを意味します。

2。substring()

部分文字列メソッドのアプローチを使用する場合は、次の構文を使用して、文字列から最初と最後の二重引用符を削除します。

_testValue.toString().subString(1,testValue.toString().length()-1);
_

_1_-文字列の最初の文字を示します

testValue.toString().length()-1:文字列の最後の文字を示します。

.substring()が機能しない場合、.replaceAll()メソッドは.getString()よりも優れています。

。ValueOf()OR .getString()

あなたの場合、なぜそれが機能しないのか分かりませんか? (引用符を含む文字列自体が原因である可能性があります)または、JSONValueをString.ValueOf(testValue);として文字列に変換するのが最善の方法です

OR

childJSONObject.getString("name");

それ以外の場合は、3> 2> 1のように設定します。

14
Vaibhav Jain

JSONValueを変換して文字列に戻します。

String.ValueOf(testValue);

または

childJSONObject.getString("name");

結局のところ、引用符で終わります-次にRegExpにフォールバックします。

testValue.toString().replaceAll("\"", "");
7
Bitmap

ただ

s.replaceAll("\"", "");

文字列内のすべての "文字を削除します。

またはあなたの場合

testValue.toString().replaceAll("\"", "");
2
Stefan Beike

値を文字列自体として取得できます。キャストまたは置換する必要はありません。

JSONObject childJSONObject = (JSONObject) test.get(i);
String testValue = childJSONObject.getString("name");

引用符なしの文字列を返します。

詳細: JSONObject

2
Amin Abu-Taleb

以下を使用して、二重引用符なしの文字列を取得できます

    JsonObject childJSONObject = new JsonObject(); 
   JSONValue testValue = childJSONObject.get("name").getAsString();

これにより、二重引用符なしの文字列" "文字列内

1
HariKishore

配列内の引用符は、使用しているJOSN Libによって異なります。

org.codehaus.jettison.json.JSONArrayまたはorg.json.JSONArray

1
user4605712

このスレッドはかなり古いですが、1時間前に同じ問題に遭遇し、正しい解決策を見つけました。 JsonValueのタイプを確認する必要があります。JsonValueの場合は、JsonStringに解析して、そのgetString()メソッドを呼び出すことができます。

if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
  c.setValue(((JsonString) val).getString());
} else {
  c.setValue(val.toString());
}
1
user2070007

Javax.json.JsonArrayを使用する場合、JsonValueの文字列を取得できます。

JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
     System.out.println(array.getJsonString(i).getString());
}
1
Thero

ここで_com.google.gwt.json.client.*_(他の場所ではほとんど見つからないJSONValueの使用)を想定すると、toString()は値のJSON表現を提供することを目的としています。

ここでは、値はJSONStringであるため、以下を使用する必要があります。

_testValue.isString().stringValue()
_
0
Thomas Broyer

最適なオプションは、JSONObjectの.getString()メソッドまたはStringの.valueOf()メソッドを使用することです。 .replaceAll("\"","")を使用することもできますが、文字列自体に_"_(二重引用符)が埋め込まれている場合、これにはいくつかの問題があります。したがって、予期しない問題を回避するためにreplaceAll()メソッドを使用しないでください。

それでも、自分で手作業でコーディングしたい場合、またはgetString() and .valueOf()を使用せずに二重引用符を削除する方法を知りたい場合は、次のように試すことができます

_testValue.toString().subString(1,testValue.toString().length())
_

文字列の最初と最後の文字を除いたサブ文字列を提供します。しかし、それはいくつかの厄介なもののようです。

0
Azeez