我使用GSON库生成以下JSON
[
{
"name": "Mobile Number",
"value": "234567891"
},
{
"name": "Controller Number",
"value": "I1500001"
},
{
"name": "Unit Type",
"value": "2"
},
{
"name": "Operator",
"value": "32"
},
{
"name": "Data Length",
"value": "0"
},
{
"name": "Software Version",
"value": "32"
},
{
"name": "Mode",
"value": "6"
}
]
我的课有两个字段如下
public class IDUData {
@SerializedName("name")
private String name;
@SerializedName("value")
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
现在我想要做的是在以下forma.i中生成JSON,希望我的name
关键字段的值成为关键。我正在使用这种方法的原因是将来如果添加新名称密钥,我预期的json将自动拥有一个密钥。
[
{
"Mobile Number": "234567891"
},
{
"Controller Number": "I1500001"
},
{
"Unit Type": "2"
},
{
"Operator": "32"
},
{
"Data Length": "0"
},
{
"Software Version": "32"
},
{
"Mode": "6"
}
]
答案 0 :(得分:1)
您要做的是首先从数据中创建HashMap。一旦您从IDUData项目中创建了List或数组,下面的代码应该非常接近:
List<IDUData> list = ...; // or IDUData[] list = ...;
HashMap<String, String> map = new HashMap<>();
for(IDUData data: list){
map.put(data.getName(), data.getValue());
}
String output = new Gson().toJson(map);
答案 1 :(得分:0)
使用gson JsonParser
String mJsonString = "{
\"name\": \"Controller Number\",
\"value\": \"I1500001\"
}";
JsonElement mJson = new JsonParser.parse(mJsonString);
IDUData object = gson.fromJson(mJson, IDUData.class);
答案 2 :(得分:0)
如果您使用onResponse()
库,则可以在Volley
中编写@wblaschko建议的代码:
final GsonRequest gsonRequest = new GsonRequest(URL /* your URL */,
IDUData.class, null, new Response.Listener<IDUData>() {
@Override
public void onResponse(IDUData data) {
// Copy code here
HashMap<String, String> map = new HashMap<>();
for(IDUData data: list){
map.put(data.getName(), data.getValue());
}
String output = new Gson().toJson(map);
// Copy code here
}, new Response.ErrorListener() {
}
}