Java GWT。将JSON字符串转换为字符串[]

Java GWT。将JSON字符串转换为字符串[],java,json,gwt,Java,Json,Gwt,我有一个结果JSON字符串:['foo','bar','baz']。如何将其转换为String[]或JsArrayString?如果不可能,我可以使用什么预定义的数据结构?我不想创建自己的类,因为它对于简单的字符串数组是多余的。由于您的字符串是有效的javascript数组表示形式,您可以使用unsafeEval获取javascript数组: JsArrayString a = JsonUtils.unsafeEval("['foo', 'bar', 'baz']"); 当然,如果将任意字符串

我有一个结果JSON字符串:
['foo','bar','baz']
。如何将其转换为
String[]
JsArrayString
?如果不可能,我可以使用什么预定义的数据结构?我不想创建自己的类,因为它对于简单的字符串数组是多余的。

由于您的字符串是有效的javascript数组表示形式,您可以使用
unsafeEval
获取javascript数组:

JsArrayString a = JsonUtils.unsafeEval("['foo', 'bar', 'baz']");
当然,如果将任意字符串传递给
unsafeEval
,则必须注意安全问题

否则,如果字符串是有效的JSON表示形式,则可以使用更安全的
safeEval

JsArrayString j = JsonUtils.safeEval("[\"foo\", \"bar\", \"baz\"]");
您可以在java代码中轻松处理
jsarraysting
,但如果您更喜欢
java.lang.String[]
,则需要编写一些类似这样的额外代码(取自库)。请注意,在生产模式中,转换不会增加任何性能损失

public static String[] toArray(JsArrayString values) {
  if (GWT.isScript()) {
    return reinterpretCast(values);
  } else {
    int length = values.length();
    String[] ret = new String[length];
    for (int i = 0, l = length; i < l; i++) {
      ret[i] = values.get(i);
    }
    return ret;
  }
}

private static native String[] reinterpretCast(JsArrayString value) /*-{
  return value;
}-*/;
公共静态字符串[]toArray(JsArrayString值){
if(GWT.isScript()){
返回reinterpretCast(值);
}否则{
int length=values.length();
字符串[]ret=新字符串[长度];
for(int i=0,l=length;i
最后,您还可以使用
java.util.List
,但它可能存在一些性能问题

List<String> l = Arrays.asList(s)
List l=Arrays.asList

GWT实际上在
com.google.GWT.JSON.clint
包中内置了用于处理JSON的类。请注意,您需要添加

到您的gwt.xml文件

JSONArray array = JSONParser.parseLenient("['foo', 'bar', 'baz']").isArray();
String[] resultArray = String[array.size()];
for(int i = 0; i < array.size(); i++)
    resultArray[i] = array.get(i).isString().stringValue();
JSONArray数组=JSONParser.parseLenient(“['foo','bar','baz']”)。isArray();
String[]resultArray=String[array.size()];
对于(int i=0;i
GWT中内置了处理JSON的方法和类,没有理由将JS引入其中。是的,我知道,而且很久以前就使用过。GWT-JSON对象在内部使用jsni解析字符串并生成大量java类,而不是性能更好的重叠类。事实上,现在GWT的趋势是使用autobeans将json映射到JavaBean,autobeans的性能要比老式的GWT-json好得多。不管怎样,用户询问如何将字符串转换为JsArrayString或字符串,这就是我的回答。