gpt4 book ai didi

javascript - 从 Web 服务返回单个 json 对象的数组

转载 作者:行者123 更新时间:2023-11-28 00:41:48 26 4
gpt4 key购买 nike

我正在从 Web 服务检索 json 并使用 $.each() 遍历层次结构。我遇到的问题是“标题”,可能有一个或多个标题。如何强制“Titles”返回对象数组,即使集合中只有一个对象,这样 $.each() 就不会爆炸。

'VB Webservice...
ds.DataSetName = "dsSurveys"
ds.Tables(0).TableName = "Surveys"
ds.Tables(1).TableName = "Titles"
ds.Tables(2).TableName = "Questions"
ds.Tables(3).TableName = "ResponseTypes"

Dim relSurveyTitles As New DataRelation("relSurveyTitles", ds.Tables("Surveys").Columns("SurveyId"), ds.Tables("Titles").Columns("SurveyId"))
Dim relTitlesQuestions As New DataRelation("relTitlesQuestions", ds.Tables("Titles").Columns("TitleId"), ds.Tables("Questions").Columns("TitleId"))
Dim relResponseTypesQuestions As New DataRelation("relResponseTypesQuestions", ds.Tables("ResponseTypes").Columns("ResponseTypeId"), ds.Tables("Questions").Columns("ResponseTypeId"))

relSurveyTitles.Nested = True
relTitlesQuestions.Nested = True
relResponseTypesQuestions.Nested = False

ds.Relations.Add(relSurveyTitles)
ds.Relations.Add(relTitlesQuestions)
ds.Relations.Add(relResponseTypesQuestions)

Dim doc As New XmlDocument()
doc.LoadXml(ds.GetXml())
Dim jsonText As String = JsonConvert.SerializeXmlNode(doc).Replace("null", """""").Replace("'", "'")
Return jsonText
//json response
{
"dsSurveys": {
"Surveys": {
"SurveyId": "1",
"SurveyName": "Survey 1",
"Titles": { //I would like to see this in an array (like "Questions") --> "Titles": [{
//regarless of object count
"SurveyId": "1",
"TitleId": "1",
"TitleName": "Title 1",
"Questions": [{
"SurveyId": "1",
"TitleId": "1",
"QuestionId": "1",
"Question": "Question 1?",
"isComment": "true",
"ResponseTypeId": "1"
},
{
"SurveyId": "1",
"TitleId": "1",
"QuestionId": "2",
"Question": "Question 2?",
"isComment": "true",
"ResponseTypeId": "1"
}]
}
},
"ResponseTypes": {
"ResponseTypeId": "1",
"ResponseType": "Yes|No|N/A"
}
}
}

最佳答案

查看the documentation ,看来你可以强制Titles通过添加 json:Array='true' 序列化为数组,即使只出现一次属性(其中 json 命名空间为 http://james.newtonking.com/projects/json )到 <Titles>节点。

您可以使用如下方式添加适当的属性:

Dim doc As New XmlDocument()
doc.LoadXml(ds.GetXml())

' Add the namespace declaration to the root node
Dim nsAttr = doc.CreateAttribute("xmlns", "json", "http://www.w3.org/2000/xmlns/")
nsAttr.Value = "http://james.newtonking.com/projects/json"
doc.DocumentElement.Attributes.Append(nsAttr)

' Add the json:Array attribute to each Titles element
For Each title As XmlElement In doc.SelectNodes("//Titles")
Dim attr = doc.CreateAttribute("json:Array", "http://james.newtonking.com/projects/json")
attr.Value = "true"
title.Attributes.Append(attr)
Next

Dim jsonText As String = JsonConvert.SerializeXmlNode(doc).Replace("null", """""").Replace("'", "'")
Return jsonText

关于javascript - 从 Web 服务返回单个 json 对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com