如何解析android中具有特殊字符的json对象
我是android新手,我有下面给出的json结构。如何使用json解析或改型解析它如何解析android中具有特殊字符的json对象,android,json,retrofit,Android,Json,Retrofit,我是android新手,我有下面给出的json结构。如何使用json解析或改型解析它 { "1,abcd":[{ "v_id":"1" }] "2,efgh":[{ "v_id":"2" }] } 试试这个 try { JSONObject jsonObject = new JSONObject("yourresponce");
{
"1,abcd":[{
"v_id":"1"
}]
"2,efgh":[{
"v_id":"2"
}]
}
试试这个
try {
JSONObject jsonObject = new JSONObject("yourresponce");
JSONArray jsonarray = jsonObject.getJSONArray("1,abcd");
for(int i=0;i<jsonarray.length();i++){
JSONObject jsonObject1 = jsonarray.getJSONObject(i);
String v_id = jsonObject1.getString("v_id");
Log.d("seelogcat","values "+v_id);
}
JSONArray jsonarray2 = jsonObject.getJSONArray("2,efgh");
for(int i=0;i<jsonarray2.length();i++){
JSONObject jsonObject1 = jsonarray2.getJSONObject(i);
String v_id = jsonObject1.getString("v_id");
Log.d("seelogcat","values "+v_id);
}
}catch (Exception e){
}
您可以在这里检查您的Json是否有效
要分离密钥:
Iterator<?> keys = response.keys();
while( keys.hasNext() ) {
String key = (String)keys.next();
if ( jObject.get(key) instanceof JSONObject ) {
System.out.println(key); // here you need splint based on (,)
}
}
Iterator keys=response.keys();
while(keys.hasNext()){
字符串键=(字符串)键。下一步();
if(jObject.get(key)JSONObject实例){
System.out.println(key);//这里需要基于(,)的夹板
}
}
此处缺少逗号(,)。登记入住
使用Gson进行改装可以完成其余工作。响应的POJO如下所示:
public class Example {
@SerializedName("1,abcd")
@Expose
private List<_1Abcd> Abcd = null;
@SerializedName("2,efgh")
@Expose
private List<_2Efgh> Efgh = null;
public List<_1Abcd> get1Abcd() {
return Abcd;
}
public void set1Abcd(List<_1Abcd> Abcd) {
this.Abcd = Abcd;
}
public List<_2Efgh> get2Efgh() {
return Efgh;
}
public void set2Efgh(List<_2Efgh> Efgh) {
this.Efgh = Efgh;
}
}
及
谷歌的Gson库可以为您提供开箱即用的功能。您尝试过编写哪些代码?请分享它。“1,abcd”中的1是id。是否可以将它们分开并以不同方式使用?您能否解释一下我们如何做到这一点?是否有其他方法可以做到这一点,因为JSonfield的数量很大?这将是非常冗长和混乱的@戈塔曼M@Nbn你想要什么解释清楚我会帮你或者我会给出我的建议我必须从JSONArray获取id和字符串名称,例如从“1,abcd”中,id为1,abcd为字符串值,我必须将字符串值设置为recycler视图。但问题是JSONArray数量庞大且动态,使用上面提到的方法会变得非常冗长和混乱。如果我们有大量json对象怎么办?我们是否必须“@SerializedName(“JSONObject”)”和显示的每个对象?您必须将@SerializedName(“YourJsonFieldName”)与@Expose一起使用,以消除愚蠢的运行时异常。点击几下,进入这个网站获得你的POJO。如果我的答案有帮助,请投票。如果你觉得这是一个解决方案,那么接受它作为一个解决方案。快乐编码:-)我们如何处理动态JsonField?如果json中添加了JsonField,我们是否必须序列化新的JsonField,或者是否有其他方法可以这样做?将所有可能的JsonField添加到POJO中。如果某个值返回null gson,则改型会自动处理该值。序列化和反序列化由gson自动完成。
{
"1,abcd": [{
"v_id": "1"
}],
"2,efgh": [{
"v_id": "2"
}]
}
public class Example {
@SerializedName("1,abcd")
@Expose
private List<_1Abcd> Abcd = null;
@SerializedName("2,efgh")
@Expose
private List<_2Efgh> Efgh = null;
public List<_1Abcd> get1Abcd() {
return Abcd;
}
public void set1Abcd(List<_1Abcd> Abcd) {
this.Abcd = Abcd;
}
public List<_2Efgh> get2Efgh() {
return Efgh;
}
public void set2Efgh(List<_2Efgh> Efgh) {
this.Efgh = Efgh;
}
}
public class _1Abcd {
@SerializedName("v_id")
@Expose
private String vId;
public String getVId() {
return vId;
}
public void setVId(String vId) {
this.vId = vId;
}
}
public class _2Efgh {
@SerializedName("v_id")
@Expose
private String vId;
public String getVId() {
return vId;
}
public void setVId(String vId) {
this.vId = vId;
}
}