ArrayList의 데이터를 JSON으로 변환 한 다음 내 웹 서버로 보내고 싶습니다. 목록 mTeamDataList
은 유형 ArrayList<TeamData>
입니다.
TeamData
클래스입니다 :
public class TeamData
{
String mFullName;
String mShortName;
String mLeague;
//constructor, getters and setters are here
}
addTeamsToDB()
배열의 데이터를 웹 서버에 쓰는 책임 이있는 메서드가 있습니다. 지금까지 내가 가진 것은 다음과 같습니다.
public static void addTeamsToDB()
{
if(mTeamDataList.size() == 0)
return;
HttpURLConnection urlConnection = null;
String addTeamURL = "http://api.somewebsite.com/add_team.php";
try
{
Gson gson = new Gson();
URL urlObj = new URL(addTeamURL);
urlConnection = (HttpURLConnection) urlObj.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
urlConnection.connect();
//I believe converting to json goes here
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
assert urlConnection != null;
urlConnection.disconnect();
}
}
SO에 대한 몇 가지 답변을 찾았지만 하나의 개체 또는 하드 코딩 된 데이터를 삽입하는 기본적인 예만 보여주었습니다. Gson을 사용하여 사용자 지정 데이터 유형 개체의 배열을 JSON으로 변환하는 것을 찾지 못했습니다.
이를 수행하는 방법이 있습니까 아니면 루프를 통해 배열의 각 항목을 수동으로 변환해야합니까?
나는 이 튜토리얼 을 따르고 있었지만 그는 NameValuePairs
이것을 달성하기 위해 클래스를 사용하고 있습니다. 그러나 더 이상 사용되지 않으므로 대신 무엇을 사용 해야할지 모르겠습니다.
또한 튜토리얼은 내장 JSON 자바 라이브러리를 사용하므로 누군가가 Gson 방식을 대신 보여줄 수 있다면 매우 유용 할 것입니다.
클래스에 게시 한 것 이상이 없다면 toJson(Object src, Type typeOfSrc)
ArrayList 에서 직접 Gson을 사용하는 데 문제가 없어야 합니다.
Type listType = new TypeToken<ArrayList<TeamData>>() {}.getType();
String json = gson.toJson(mTeamDataList, listType);
그 이유는 TeamData
클래스에 일반 필드 만 있기 때문입니다 .
물론 JSON에 "키"를 표시하려면 @SerializedName
클래스 멤버에 주석을 추가해야합니다 .
그런 다음 HttpUrlConnection을 사용하여 데이터를 보내려면 out
변수 를 선언하는 줄을 다음과 같이 바꿉니다 .
OutputStreamWriter wr= new OutputStreamWriter(urlConnection.getOutputStream());
wr.write(json);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다