语言:Java和Gson
解析了JSON数组之后,我该怎么做:
1)打印所有内容
2)迭代其内容?
例如,这是我的代码:
String JSInput = "//Json String";
Type listType = new TypeToken<TabClass[]>() {}.getType();
Input_String =GsonObject.fromJson(JSInput, listType);
System.out.println(Input_String.toString());
相应的类描述是:
class TabClass{
String Name;
String Parent;
public String getName() {
return Name;
}
public String getParent() {
return Parent;
}
public void setName(String Name) {
this.Name = Name;
}
public void setParent(String Parent) {
this.Parent = Parent;
}
}
上面的代码只返回对象的描述及其内存位置:
[Lcom.example.projectname.TabClass;@1fbfd6
如何打印生成的对象的内容,或者对其进行迭代?
答案 0 :(得分:3)
没有必要仅为数组创建TypeToken
。 Gson会反序列化为数组类型。
如果你有一个数组,那么你不必显式迭代它的内容只是为了打印。您可以使用Arrays.toString()
方法之一。
以下是一个例子。
// output:
// [{value1=one, value2=1}, {value1=two, value2=2}, {value1=three, value2=3}]
import java.util.Arrays;
import com.google.gson.Gson;
public class Foo
{
public static void main(String[] args)
{
Gson GsonObject = new Gson();
String JSInput = "[{\"value1\":\"one\",\"value2\":1},{\"value1\":\"two\",\"value2\":2},{\"value1\":\"three\",\"value2\":3}]";
TabClass[] Input_String = GsonObject.fromJson(JSInput, TabClass[].class);
System.out.println(Arrays.toString(Input_String));
}
}
class TabClass
{
private String value1;
private int value2;
@Override
public String toString()
{
return String.format(
"{value1=%s, value2=%d}",
value1, value2);
}
}
否则,如果您更明确地遍历数组的组件,使用Java,您可以选择一些方法。一个简单的方法是使用for-each循环结构。
for (TabClass tab : Input_String)
{
System.out.println(tab);
}
(顺便说一下,&#34; Input_String&#34;对于这个TabClass
数组来说不是一个好名字。更具描述性的名称可能是&#34;标签&#34;。)