使用Put方法构建JSONObjects

时间:2012-03-28 21:30:36

标签: java android json

我正在远离Serializable对象(需要缓存和移动东西 - 每个人似乎都说要远离Serializable对象)并开始使用write方法将我的复杂对象转换为JSONObjects。

关键点:我已经开始讨论如何从复杂对象中创建JSONObjects。我天真地尝试过这个:

    JSONObject toReturn = new JSONObject();
    Iterator<LocationModel> locIter = locationList.iterator();

    while (locIter.hasNext())
    {
        try {
            toReturn.put("location", locIter.next());
        } catch (JSONException e) {
        }
    }

其中LocationModel如下所示:

public class LocationModel implements Serializable {

private String name;
private double Longitude;
private double Latitude;
private String description;

public LocationModel(
        basic construtor sets variables above
}

public String toString()
{
    return (name + " 8888 " + longitude + "/" + latitude + " !! " + description);
}

}

现在奇怪的事情(至少对我而言)是在第一块代码中的Iterator完成之后,我将JSONObject作为字符串输出,我看到它看起来像:

  

{“location”:“LocationName 8888 -1/1 !!这里有一些描述”}

问题

  1. 在JSONObject的文档中,没有提到调用Objects“toString”函数的JSONObject.put(name,Object),那么它是如何/为什么这样做的呢?实际上,我的LocationModel类还有其他返回字符串的函数,因此它不是唯一返回字符串的函数。

1 个答案:

答案 0 :(得分:1)

我强烈建议你使用gson作为开始,如果你需要一些其他json解析器的额外速度,你可以在以后替换gson。已经将它用于几个大型项目,它只需要几天的项目:) https://sites.google.com/site/gson/gson-user-guide Gson是一个用于解码和编码json的java对象的库。它的重量非常轻但不是最快的,但它是最快的集成,用于编码和解码对象的字面上的oneliner,无论对象有多大和多么复杂,只要你有域对象对于您正在使用的数据。