对象到字符串列表的JSON数组

时间:2017-02-09 08:55:38

标签: java json gson

我有以下JSON

[{
    "rowId": "03 EUR10580000"
}, {
    "rowId": "03 EUR10900001"
}, {
    "rowId": "03 EUR1053RUD*"
}, {
    "rowId": "033331"
}]

我希望将它转换为只包含rowId值的String列表,所以在这种情况下就像

"03 EUR10580000"
"03 EUR10900001"
"03 EUR1053RUD*"
"033331"

我是用Gson从Json做的,但作为回报我得到一个LinkedTreeMap列表,当我做一个循环失败。我想要一个简单的字符串列表。

5 个答案:

答案 0 :(得分:3)

好吧,你的字符串不是"字符串列表"的json。它包含对象列表。所以你可以做的是用rowID作为字符串属性创建一个类。

班级数据

  • rowID(类型字符串)

然后你可以使用Gson将这个JSON字符串解析为List<数据>使用here

或者你必须手动准备一个新的json解析器。

答案 1 :(得分:2)

如果您只想使用Gson快速解析字符串,则只需创建构建器并使用"默认" ListMap个实例用于表示Java中的JSON。如果您想要更加类型安全,或者想要在更大的"更大的"中使用已解析的实例。项目,我建议按照其他答案中的描述创建一个POJO。

final GsonBuilder gsonBuilder = new GsonBuilder();

// you may want to configure the builder

final Gson gson = gsonBuilder.create();

/*
 * The following only works if you are sure that your JSON looks
 * as described, otherwise List<Object> may be better and a validation,
 * within the iteration.
 */
@SuppressWarnings("unchecked") 
final List<Map<String, String>> list = gson.fromJson("[{ ... }]", List.class);

final List<String> stringList = list.stream()
            .map(m -> m.get("rowId"))
            .collect(Collectors.toList());

System.out.println(stringList);

答案 2 :(得分:1)

将POJO课程写为

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class RootObject {

    @SerializedName("rowId")
    @Expose
    private String rowId;

    public String getRowId() {
        return rowId;
    }

    public void setRowId(String rowId) {
        this.rowId = rowId;
    }

}

然后只需创建List<RootObject>并从POJO中获取值。

答案 3 :(得分:0)

你有:

String str = "[{\"rowId\":\"03 EUR10580000\"},{\"rowId\":\"03 EUR10900001\"},{\"rowId\":\"03 EUR1053RUD*\"},{\"rowId\":\"033331\"}]"

你可以这样做(不需要任何像gson这样的外部库):

str = str.replace("{\"rowId\":\"","").replace("\"}","").replace("[","").replace("]","");
List<String> rowIDs = str.split(",");

如果字符串格式为JSON,您还可以trim() rowIDs

中的每个字符串$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } /* create a prepared statement */ $stmt = $mysqli->prepare("SELECT * FROM (SELECT * FROM players WHERE Player_name = ?) s1 WHERE EXISTS (SELECT * FROM (SELECT * FROM players WHERE Player_name = ?) s2 WHERE s1.Team_name = s2.Opposing_team)") /* bind parameters for markers */ $stmt->bind_param("ss", $playerOne, $playerTwo); /* execute query */ $stmt->execute();

答案 4 :(得分:0)

您需要将json字符串解析为avg / total 67 60 59 5。然后迭代JsonArray实例并将每个json元素添加到列表JsonArray。 Follwoing code sinppet是解决方案:

ls