在此处使用Retrofit来使用Google Civic API。
该库要求您创建一个API将返回的模型,就像我已经使用 Election 一样。这基本上是谷歌文档的副本。
(Retrofit将响应属性绑定到具有相同名称的属性)
Election.Java:
public class Election {
private long id;
private String name;
private String electionDay;
private String ocdDivisionId;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getElectionDay() {
return electionDay;
}
public void setElectionDay(String electionDay) {
this.electionDay = electionDay;
}
public String getOcdDivisionId() {
return ocdDivisionId;
}
public void setOcdDivisionId(String ocdDivisionId) {
this.ocdDivisionId = ocdDivisionId;
}
}
但是代表有不一致的属性名称,因此我没有看到以某种方式对此进行建模的方法Retrofit将知道如何反序列化API&# 39;的回应。
代表对象(JSON):
如何让Retrofit反序列化在分割键之后捕获属性命名变量的模型?
答案 0 :(得分:0)
假设您正在使用#include<stdio.h>
#include<malloc.h>
void merge(int a[],int beg,int mid,int end)
{
int n1=mid-beg+1;
int n2=end-mid;
int i=0,j=0,k=0;
int *p1 = (int*)malloc((n1)*sizeof(int));
int *p2 = (int*)malloc((n2)*sizeof(int));
for(i=0;i<n1;i++)
p1[i]=a[beg+i];
for(j=0;j<n2;j++)
p2[j]=a[mid+1+j];
i=j=0;
for(k=beg;k<=end;k++)
{
if(p1[i]<=p2[j])
{
a[k]=p1[i];
i=i+1;
}
else {
a[k]=p2[j];
j=j+1; }
}
}
void merge_sort(int a[],int beg,int end)
{
if(beg<end)
{
int mid=(beg+end)/2;
merge_sort(a,beg,mid);
merge_sort(a,mid+1,end);
merge(a,beg,mid,end);
}
}
void main()
{
printf("Enter Array of size 10:\n");
int a[10],i;
for(i=0;i<10;i++)
scanf("\n%d",&a[i]);
int n=sizeof a/sizeof a[0];
merge_sort(a,0,n-1);
printf("\nSorted array is:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
转换器,我个人会使用地图。我想其他转换器也可以实现同样的效果,但我从未使用它们。假设您有以下对象:
#include <QApplication>
#include <QFileDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString path = QDir::currentPath() + "/myfile.txt";
QString fileName = QFileDialog::getSaveFileName(0, "Save file",
path,
"Music files(*.mp3;;Text files (*.txt)");
return a.exec();
}
表示Gson
数组中的对象。然后你可以上课:
public class Division {
@SerializedName("name")
@Expose
private String name;
@SerializedName("alsoKnownAs")
@Expose
private List<String> alsoKnownAs = new ArrayList<>();
@SerializedName("officeIndices")
@Expose
private List<Integer> officeIndices = new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getAlsoKnownAs() {
return alsoKnownAs;
}
public void setAlsoKnownAs(List<String> alsoKnownAs) {
this.alsoKnownAs = alsoKnownAs;
}
public List<Integer> getOfficeIndices() {
return officeIndices;
}
public void setOfficeIndices(List<Integer> officeIndices) {
this.officeIndices = officeIndices;
}
}
注意这里使用地图?在幕后,Gson将能够对您的对象进行序列化和反序列化。 Divisions是你在问题中给我们的json的根。
希望这有帮助