JSON对象和字符串函数

时间:2016-06-24 07:20:12

标签: javascript json

我试图在JSON属性值上调用startsWith()字符串函数:

{"消息":" XYZABC"}

SELECT 
    tblReceipts.ID, 
    tblClient.ClientID, 
    tblClient.ClientName, 
    tblReceipts.DateRec, 
    tblReceipts.Type, 
    tblReceipts.Amount, 
    tblReceipts.SerialNo,
    [Forms]![frmDisclosure]![Client] As CurrentClientID
FROM 
    tblReceipts 
INNER JOIN 
    tblClient 
    ON tblReceipts.ClientLookup = tblClient.ClientID
WHERE 
    (((tblClient.ClientID)=IIf([Forms]![frmDisclosure]![Client]=661,417,[Forms]![frmDisclosure]![Client])))
ORDER BY 
    tblClient.ClientName, tblReceipts.DateRec DESC;

但是我收到了错误:

  

对象xyzabc没有方法' startsWith'

我该怎么做?

代码在服务器端运行,在Node.js上运行

3 个答案:

答案 0 :(得分:1)

显然,Js有字符串的startsWith函数。但是,使用您自己的函数来查看字符串是否以值开头应该不会导致错误。

 function StartsWith(s1, s2) {
      return (s1.length >= s2.length && s1.substr(0, s2.length) == s2);
    }
    var jsonResponse = JSON.parse(httpResponse.text);
   var stringMessage = jsonResponse.message.toString();
   if(StartsWith(stringMessage,'xyz')) {
      //Doing Stuff!
    }

答案 1 :(得分:1)

您的浏览器可能不支持startsWith()功能,因此您可以使用RegExp来解决此问题......

var jsonObject={message:"xyzHELLO"};
var regex=new RegExp("^xyz");
if(regex.test(jsonObject["message"])){
alert("hello");
}

Live Demo HERE

<强> [编辑]

如果您想在每个startsWith()中添加功能string,可以像这样添加

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        var regex = new RegExp("^" + searching);
        if (regex.test(this.toString())) {
            return true;
        }
        else {
            return false;
        }
    }
}

之后你就可以这样使用:

var jsonObject = { message: "xyzHELLO" };
if (jsonObject["message"].toString().startsWith("xyz")) {
    alert("start with");
}
else {
    alert("not start with");
}

<强> [编辑]

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        if (this.toString().indexOf(searching) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

根据@nnnnnn的评论,我也认为如果我们使用JavaScript的原生函数,感谢@nnnnnn,这是一个好习惯。

答案 2 :(得分:1)

请仔细检查您输入的JSON。您的代码就像httpResponse.text中具有正确JSON输入的魅力一样。

var json = '{"message": "xyztest"}';
var jsonResponse = JSON.parse(json);
var stringMessage = jsonResponse.message.toString();

if(stringMessage.startsWith('xyz')) {
    alert('It works!');
}

另外,请确保您使用的浏览器支持startsWith方法。 Here您可以找到包含所有支持的浏览器的列表。

如果您需要解决浏览器兼容性问题,可以使用广泛支持的indexOf方法。

if(stringMessage.indexOf('xyz') === 0) {
    alert('It works!');
}

HERE is a Fiddle两种情况。