呼び出しが成功すると、「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
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のように設定します。
JSONValueを変換して文字列に戻します。
String.ValueOf(testValue);
または
childJSONObject.getString("name");
結局のところ、引用符で終わります-次にRegExpにフォールバックします。
testValue.toString().replaceAll("\"", "");
ただ
s.replaceAll("\"", "");
文字列内のすべての "文字を削除します。
またはあなたの場合
testValue.toString().replaceAll("\"", "");
値を文字列自体として取得できます。キャストまたは置換する必要はありません。
JSONObject childJSONObject = (JSONObject) test.get(i);
String testValue = childJSONObject.getString("name");
引用符なしの文字列を返します。
詳細: JSONObject
以下を使用して、二重引用符なしの文字列を取得できます
JsonObject childJSONObject = new JsonObject();
JSONValue testValue = childJSONObject.get("name").getAsString();
これにより、二重引用符なしの文字列" "
文字列内
配列内の引用符は、使用しているJOSN Libによって異なります。
org.codehaus.jettison.json.JSONArrayまたはorg.json.JSONArray
このスレッドはかなり古いですが、1時間前に同じ問題に遭遇し、正しい解決策を見つけました。 JsonValueのタイプを確認する必要があります。JsonValueの場合は、JsonStringに解析して、そのgetString()メソッドを呼び出すことができます。
if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
c.setValue(((JsonString) val).getString());
} else {
c.setValue(val.toString());
}
Javax.json.JsonArrayを使用する場合、JsonValueの文字列を取得できます。
JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
System.out.println(array.getJsonString(i).getString());
}
ここで_com.google.gwt.json.client.*
_(他の場所ではほとんど見つからないJSONValue
の使用)を想定すると、toString()
は値のJSON表現を提供することを目的としています。
ここでは、値はJSONString
であるため、以下を使用する必要があります。
_testValue.isString().stringValue()
_
最適なオプションは、JSONObjectの.getString()
メソッドまたはStringの.valueOf()
メソッドを使用することです。 .replaceAll("\"","")
を使用することもできますが、文字列自体に_"
_(二重引用符)が埋め込まれている場合、これにはいくつかの問題があります。したがって、予期しない問題を回避するためにreplaceAll()メソッドを使用しないでください。
それでも、自分で手作業でコーディングしたい場合、またはgetString() and .valueOf()
を使用せずに二重引用符を削除する方法を知りたい場合は、次のように試すことができます
_testValue.toString().subString(1,testValue.toString().length())
_
文字列の最初と最後の文字を除いたサブ文字列を提供します。しかし、それはいくつかの厄介なもののようです。