1

我意识到这可能是一个新问题,但无论我尝试或查找什么,我似乎都找不到任何答案来解释为什么我不能像我想要的 json 字符串那样修剪一些字符串。

该页面通过 AJAX 请求到达,查询数据库,并尝试编译一个 json 字符串,该字符串最终将被解析为一个 json 对象,该对象是一个对象数组。听起来很简单...

我现在拥有的:

foreach (var row in db.Query(selectQueryString))
{
    jsonString += "{";
    jsonString += "\"title\":\"" + Json.Encode(row.title) + "\",";
    jsonString += "\"dateNumber\":\"" + Json.Encode(row.eventDate.ToString().Substring(0, row.eventDate.ToString().IndexOf("/"))) + "\",";
    jsonString += "\"dateMonth\":\"" + Json.Encode(row.eventDate.ToString().Substring(row.eventDate.ToString().IndexOf("/"), row.eventDate.ToString().LastIndexOf("/"))) + "\",";
    jsonString += "\"dateYear\":\"" + Json.Encode(row.eventDate.ToString().Substring(row.eventDate.ToString().LastIndexOf("/"), row.eventDate.ToString().Length)) + "\",";
    jsonString += "\"summary\":\"" + Json.Encode(row.summary) + "\",";
    jsonString += "},";
}

异常详细信息:System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。 包含“dateYear”的行上的错误

我想要做的就是在此结束时得到一个长的 json 字符串,但我似乎无法停止出错。

4

1 回答 1

2

The second parameter you pass in a substring should be the number of characters you want back, but you are passing in the total length of the string that you want a substring of.

EDIT: If it's a year you're trying to get back that second parameter should be 4 I reckon:

Json.Encode(row.eventDate.ToString().Substring(row.eventDate.ToString().LastIndexOf("/"), 4))
于 2013-05-20T14:08:19.643 回答