【问题标题】:Java - Convert String to String ArrayJava - 将字符串转换为字符串数组
【发布时间】:2013-04-29 12:18:03
【问题描述】:

我是 Java 新手。请帮我。下面是实现 HTTP POST 方法作为响应后的字符串:

 {"Result":"{  \"Search\": [    {      \"Code\": \"200\"    },    {      \"Message\": \"Fetched successfully\"    },    {      \"Name\": \"1\",      \"id\": \"166\",      \"PID\": \"162\"    }  ]}"}

现在我只想在给定的字符串中获得Names,并形成Names 的Stirng[]。请帮帮我。

【问题讨论】:

  • 你的 JSON 格式不正确,你应该检查你的服务器代码以避免对你的数据进行双重 JSON 转换(注意 \" 元素,应该没有这些,只有双引号,没有斜杠)
  • 是的,它格式不正确...但是从上面的 JSON 对象中我无法获得“名称”值的字符串数组...
  • 此响应字符串为 JSON 格式,搜索如何解析 JSON 字符串或查看@gurvinder372 答案。
  • @user2326860 如果您无法更改服务器部分,最好的办法是进行双重 JSON 转换,首先将 GetEpExamsResult 的内容作为字符串,然后再次将此字符串解析为JSON 以正确格式获取数据。但是,您更愿意接受 hacky 和 ​​kludgy 的答案,这需要多次尝试才能使其正常工作,并且最终将在未来的任何时候停止工作。好吧,祝你选择好运=)
  • 这是 JSON,你真的应该这样解析它。如果问题在于它的格式不正确 - 那么也许这就是需要解决的问题。

标签: java android string arrays


【解决方案1】:

你需要先解析这个JSON,然后遍历它

http://www.mkyong.com/java/json-simple-example-read-and-write-json/

parsing json with java

https://stackoverflow.com/questions/338586/a-better-java-json-library?rq=1

解析完这个 JSON 文本后,接下来就是遍历对象并不断将值推送到数组列表中

一旦你得到了arraylist,你就可以把它转换成String数组

Converting 'ArrayList<String> to 'String[]' in Java

【讨论】:

  • 是的,我已经阅读了这些链接。但这里的问题是 Json 数组有“\”。所以我无法正确获取 JSON 数组。你能告诉我如何在上面放置的字符串中形成“名称”键的字符串数组吗???
  • @user2326860 这是控制台输出还是您将其存储在 java 变量中的方式?
  • @user2326860 没必要,先把所有的“\”换成“”,这样你的回复就没有反斜杠了
  • if (response.contains("\'")) { response = response.replaceAll("\'", "");我已经这样做了......但是\没有替换......你可以纠正它来替换\......
  • 试试这个字符串 str2 = "Str\\sdfsdf";字符串 str = "\\\\"; System.out.println(str2.replaceAll(str, ""));
【解决方案2】:

您可以使用以下代码提取名称及其值

    List<String> nameValues = new ArrayList<String>();
    Matcher matcher1 = Pattern.compile("\\\\\"Name\\\\\":\\s\\\\\"[^,}\\]]+\\\\\"").matcher(value);
    while (matcher1.find()) {
        String keyValuePair = matcher1.group();
        String[] keyValue = keyValuePair.split(":");
        String val = keyValue[1].trim();
        System.out.println(keyValue[0]);
        System.out.println(">" + val + "<");
        nameValues.add(val.substring(2, val.length() - 2));
    }
    System.out.println(nameValues);

【讨论】:

  • 非常感谢...但是通过使用您的代码,我得到了 ex 的每个键和值。我正在获取代码、消息、名称、categoryId ......但我只想要名称......你可以修改代码,以便我能够只检索名称值并存储在字符串数组中......请
  • 只需对 keyValue[0] 进行 if 检查并使用 keyValue[1] 填充列表
  • @user2326860 现在怎么样?
  • 谢谢...它成功了...你让我很开心...非常感谢哥们...我没有足够的声誉来投票...所以接受ddd ....
【解决方案3】:

这里用这个:

public class CStringToCharArray {
 public static void main(String[] args) {
    String testString = "This Is Test";
    char[] stringToCharArray = testString.toCharArray();

    for (char output : stringToCharArray) {
        System.out.println(output);
    }
}
}

【讨论】:

  • 所以,使用您的代码,我将每个字符都作为输出... .
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2011-06-18
  • 2017-11-27
相关资源
最近更新 更多