如何解析这种自制的基于字符串的数据格式?

时间:2011-11-09 10:00:09

标签: javascript jquery

我需要遍历ID和标签的数据集。我得到了一些正确的代码,但我需要一些帮助。

// 1. String
var string = '1:answer1,2:answer2,3:answer3,4:answer4,5:answer5,'

// 2. Split to array 
var string = string.split(",");

// 3. EACH 
$.each(string, function(key, val) {

    var answer = answer.split(":");
    $.each(answer, function(key1, val1) {
       // output textfield with id of key1 and value of val1 
    });

});

我可以查看第一组数据,即逗号分隔,但不是下一个(:)。我该怎么做?

4 个答案:

答案 0 :(得分:4)

应该是var answer= val.split(":");而不是var answer = answer.split(":");

答案 1 :(得分:4)

$.each(string, function(key, val) {

        var answer = val.split(":");

        key1 = answer[0];
        val1 =  answer[1];

        alert(key1+"--"+val1);
    });

答案 2 :(得分:2)

您可以使用String.replace作为迭代器:

var string = '1:answer1,2:answer2,3:answer3,4:answer4,5:answer5,'

var html = []

string.replace(/([^:]+):([^,]+)(,|$)/g, function(_, key, val) {
     html.push("<input name='" + key + "' value='" + val + "'>")
});

alert(html.join("\n"))

答案 3 :(得分:1)

当然,没有什么可以反对你自制的字符串,但是你是否考虑使用JSON来封装字符串中的数据。虽然JSON是普遍可用的,但它可能是JavaScript的完美匹配。

因此,如果您按如下方式对数据进行编码,那么解析它真的是件小事:

var data = [
    {
        "id": 1,
        "answer": "answer1"
    },
    {
        "id": 2,
        "name": "answer2.. etc."
    }
];

现在,您可以使用数组和属性表示法轻松访问数据:

alert (data[0].answer);

更新:因此,如果你很幸运并且你的Rails应用程序是在3.1版本上,那么添加对JSON的支持真的是小菜一碟:

对于基本的JSON支持,您唯一需要做的就是:

# GET /answers/1
# GET /answers/1.json
def show
  @answer = Answer.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json do
        render json: @answer
    end
  end
end