【问题标题】:Comparing String against JSON.getString将字符串与 JSON.getString 进行比较
【发布时间】:2015-05-18 20:58:13
【问题描述】:

我有点卡在这个上。我正在尝试将 String 与 jsonobject.getString 进行比较,但无论我做什么,它们似乎都不匹配:

String date = scoreJson.getString("Date");
if (dateString.equals(date))
{
    //do stuff
}

dateString 的值在这里赋值:

calendar = Calendar.getInstance();
int day = calendar.get(calendar.DAY_OF_MONTH), month = calendar.get(calendar.MONTH), year = calendar.get(calendar.YEAR);

//months start at 0 in calendar
month += 1;

//use builder to create the dateString
builder.append(year).append("-").append(month).append("-").append(day);
dateString = builder.toString();

当我在调试中查看两个字符串时,它们显示“2015-05-18”,但是它们在条件语句中不匹配。有谁知道为什么,以及我如何比较它们?

谢谢。

编辑:JSON 对象将以这种格式返回:

{"ScoreData":{"Username":"testUser","Id":"8fb25209-863a-410b-a440-
b5b57a903ee1","Date":"2015-02-25","Score":"25.3"}}

我正在从这里检索值并保存到 sharedprefs:

//response comes back as two JSONObjects, this makes the inner object into a new JSON
JSONObject responseJson = new JSONObject(response);

JSONObject scoreJson = new JSONObject(responseJson.getString("ScoreData"));

String date = scoreJson.getString("Date");
puzzleScore = scoreJson.getString("Score");

SharedPreferencesWrapper.saveToPrefs(c, "score-" + date, puzzleScore);

然后我在这里检查密钥:

puzzleScore = SharedPreferencesWrapper.getFromPrefs(c, "score-" + dateString, "NotFound");

if (!puzzleScore.contains("NotFound"))
{
    //do stuff
}

【问题讨论】:

  • 也许你的字符串中有不可打印的字符。另外为什么不比较 Date 实例呢?
  • Json 字符串包括 " 所以在比较之前尝试 replaceAll("\"", "")。
  • @AlexisC。嗯,这是可能的,我正在使用字符串比较,因为在我的代码中我需要比较它们的地方是从 sharedpreferences 中检索一个项目,例如:code SharedPreferencesWrapper.saveToPrefs(c, "score-" + date, puzzleScore);code puzzleScore = SharedPreferencesWrapper.getFromPrefs(c, "score-" + dateString, "NotFound");
  • 用 toString() 表示比较相等是丑陋的。 toString() 通常用于表示,而不是比较。更好的办法是将 JSON 获取的日期解析为 Calendar 并比较 Calendar 对象。
  • @FilipMalczak。不幸的是,我无法解析到日期,因为我需要两个字符串来匹配才能从 sharedpreferences 中提取密钥。

标签: java android json compare


【解决方案1】:

您是否尝试在此scoreJson.getString("Date") 之后添加toString(),因此代码将类似于scoreJson.getString("Date").toString()

我认为这是编码的问题。如果这不起作用,请检查字符串周围的空格。您可以使用 trim() 删除开头和结尾的空格。

希望对你有帮助,祝你好运~

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多