我想将服务器中的数据加载到数组中。 我的json是: 我想从服务器加载数据到数组。 我的json是:
{
"mapmarkers": {
"markers":[{
"lat": 35.651005,
"long": 51.325113,
"title": "Ł…Ł†Ų·Ł‚Ł‡ 1",
"snippet": "ŲŖŁŲ¶ŪŲŲ§ŲŖ Ł…Ų±ŲØŁŲ· ŲØŁ‡ Ł…Ł†Ų·Ł‚Ł‡ 1"
},{
"lat": 35.651964,
"long": 51.324984,
"title": "Ł…Ł†Ų·Ł‚Ł‡ 2",
"snippet": "ŲŖŁŲ¶ŪŲŲ§ŲŖ 2"
},{
"lat": 35.649521,
"long": 51.327027,
"title": "Ł…Ł†Ų·Ł‚Ł‡ 3",
"snippet": "ŲŖŁŲ¶ŪŲŲ§ŲŖ 3"
},{
"lat": 35.649799,
"long": 51.325620,
"title": "Ł…Ł†Ų·Ł‚Ł‡ 4",
"snippet": "ŲŖŁŲ¶ŪŲŲ§ŲŖ 4"
},{
"lat": 35.650235,
"long": 51.324697,
"title": "Ł…Ł†Ų·Ł‚Ł‡ 5",
"snippet": "ŲŖŁŲ¶ŪŲŲ§ŲŖ 5"
}
}
使用此代码,我从服务器获取数据并设置为arrayList:
private ArrayList<Markerinfo> model = new ArrayList<Markerinfo>();
public void initRequest() {
APIinterface api = APIrequest.getCient().create(APIinterface.class);
Call<Mapmarkers> call = api.getMarkerResponse();
call.enqueue(new Callback<Mapmarkers>() {
@Override
public void onResponse(Call<Mapmarkers> call, Response<Mapmarkers> response) {
if (response.body() != null) {
model.addAll(response.body().getMarkers());
for (int i = 0; i < model.size(); i++) {
createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet());
LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
}
}
}
@Override
public void onFailure(Call<Mapmarkers> call, Throwable t) {
}
});
}
例如,我想在lat下面保存并输入 String address3;
"lat": 35.649521,
"long": 51.327027,
怎么可能?
答案 0 :(得分:0)
试试这个:将Double值转换为字符串并添加它们。
String address; //declare outside
for (int i = 0; i < model.size(); i++) {
if(i == 2) { //third item
address = String.valueOf(model.get(i).getLat()) + String.valueOf( model.get(i).getLong());
}
createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet());
LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
}
修改强>
对于特定物品位置使用:
#ifndef DATA_H
#define DATA_H
#include <string>
#include <vector>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
namespace ml {
class Data {
private:
std::vector<float> d;
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version);
public:
static Data Load(const std::string& filename);
Data(const std::vector<float>& d);
Data(const Data& rhs);
Data();
~Data();
Data& operator=(const Data& rhs);
void save(const std::string& filename);
std::vector<float> getD() const;
};
}
#endif // DATA_H
答案 1 :(得分:0)
使用字符串func stripCtlAndExtFromBytes(str string) string {
b := make([]byte, len(str))
var bl int
for i := 0; i < len(str); i++ {
c := str[i]
if c >= 32 && c < 127 {
b[bl] = c
bl++
}
}
return string(b[:bl])
}
存储所有ArrayList
的所有addresses
。
试试这个:
Markerinfo
根据您的需要稍后使用private ArrayList<Markerinfo> model = new ArrayList<Markerinfo>();
private ArrayList<String> addressList= new ArrayList<String>();
public void initRequest() {
APIinterface api = APIrequest.getCient().create(APIinterface.class);
Call<Mapmarkers> call = api.getMarkerResponse();
call.enqueue(new Callback<Mapmarkers>() {
@Override
public void onResponse(Call<Mapmarkers> call, Response<Mapmarkers> response) {
if (response.body() != null) {
model.addAll(response.body().getMarkers());
for (int i = 0; i < model.size(); i++) {
// Add address to list
addressList.add(String.valueOf(model.get(i).getLat()) + ", " + String.valueOf( model.get(i).getLong()));
createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet());
LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
}
}
}
@Override
public void onFailure(Call<Mapmarkers> call, Throwable t) {
}
});
}
值。
addressList
希望这会有所帮助〜