这是我的问题。我从this one或this one获取了一个随机的json文件。
我试图在android studio中使用JSON解析它(例如,使用gson)。但我无法在gson中找到这样的选项,让我从JSON文件中选择一个令牌而不需要知道JSON结构(并创建一个类和那些东西)。当我尝试在VisualBasic.NET中执行此操作时,使用此代码和NewtonSoft.Json库非常简单:
Dim jsonSet As JObject = JObject.Parse(responseFromServer)
balance = jsonSet.SelectToken("$..balance")
但是用Java做这件事似乎更难...有人可以帮助我吗?
答案 0 :(得分:0)
Gson是一个对象序列化/反序列化库。其目的是与已知对象进行序列化。
您想要使用一个更基本的库,其中有多个实现可用。其中一些列出http://www.json.org/
它们允许您编写类似
的代码JSONObject obj = new JSONObject("{}");
答案 1 :(得分:0)
您可以将json字符串粘贴到http://www.jsonschema2pojo.org/
它将创建jsonString的对象。
你的json示例:
-----------------------------------com.example.Datum.java-----------------------------------
package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Datum {
@SerializedName("address")
@Expose
private String address;
@SerializedName("balance")
@Expose
private Integer balance;
@SerializedName("nonce")
@Expose
private Object nonce;
@SerializedName("code")
@Expose
private String code;
@SerializedName("name")
@Expose
private Object name;
@SerializedName("storage")
@Expose
private Object storage;
@SerializedName("firstSeen")
@Expose
private String firstSeen;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getBalance() {
return balance;
}
public void setBalance(Integer balance) {
this.balance = balance;
}
public Object getNonce() {
return nonce;
}
public void setNonce(Object nonce) {
this.nonce = nonce;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Object getName() {
return name;
}
public void setName(Object name) {
this.name = name;
}
public Object getStorage() {
return storage;
}
public void setStorage(Object storage) {
this.storage = storage;
}
public String getFirstSeen() {
return firstSeen;
}
public void setFirstSeen(String firstSeen) {
this.firstSeen = firstSeen;
}
}
-----------------------------------com.example.Example.java-----------------------------------
package com.example;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("data")
@Expose
private List<Datum> data = null;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public List<Datum> getData() {
return data;
}
public void setData(List<Datum> data) {
this.data = data;
}
}
从jsonString获取带有函数的对象:
// Deserialize to single object.
public Example deserializeFromJson(String jsonString) {
Gson gson = new Gson();
Example myClass = gson.fromJson(jsonString, Example.class);
return myClass;
}
你可以获得对象中的所有内容。
我希望它可以帮助你解决问题!
答案 2 :(得分:0)
嗯,最后做了一些研究后我发现了这个: https://github.com/json-path/JsonPath
这正是我所需要的,因为它允许您访问JSON对象并使用其路径查找令牌,就像我在.NET中使用NewtonSoft.Json一样。
我认为它非常有趣,因为无论JSON文件的结构是什么,您都可以通过仅提供格式为&#34; $ .. path&#34;的路径来查找值。