[問題] json小問題

看板Web_Design作者 (老實樣)時間14年前 (2011/12/23 10:00), 編輯推噓6(605)
留言11則, 6人參與, 最新討論串1/1
請問一下 目前有個網頁有很多text和areatext 是讓使用者輸入東西的 並且會將這些欄位包成json存到資料庫裡面去 例如像這樣子的json包著 json += "SUBJECT:\'" + Subject + "\',"; json += "PERSON:\'" + SponsorPerson + "\',"; json += "CONTENT:\'" + Content + "\',"; json += "DATE:\'" + SponsorDate + "\'"; 因為裡面有參雜著"和' 所以我那些text欄位 只要輸入'和" 就會跑出格式錯誤的訊息 狀態:500 錯誤:Internal Server Error 訊息:{"Message":"傳入了無效的物件,必須有 \u0027:\u0027 或 \u0027}\u0027。 (183): {SEQ:\u002755910\u0027,DOC_SEQ:\u002768015\u0027,DEPT_NAME:\u0027IKEA 高雄店1F大廳扶正及出入口步道磚改善工程 \u0027,JOB_NO:\u0027UCB10042\u0027,WD_NO:\u0027\u0027,FILE_EXPIRATION:\u0027\u0027,DEPT:\u0027IKEA 高雄店1F大廳扶正及出入口步道磚改善工程 \u0027,TEL:\u0027\u0027,SUBJECT:\u0027\u0027,PERSON:\u0027\u0027,CONTENT:\u0027\u0027\u0027\u0027\u0027\u0027\u0027,DATE:\u00272011/12/23\u0027}","StackTrace":" 於 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n 於 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n 於 System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n 於 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n 於 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n 於 SignSubmitEdit2.Save(String paramJSON) 於 d:\\projects\\S-USEC-E3-MIS2\\UI\\WebSite\\App_Code\\WebService\\SignSubmitEdit2.cs: 行 56","ExceptionType":"System.ArgumentException"} 請問有甚麼辦法可以解決格式的問題呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.146.229.136

12/23 10:23, , 1F
escape 或是HTMLencode 試試看
12/23 10:23, 1F

12/23 10:52, , 2F
好JSON.stringify不用嗎:D
12/23 10:52, 2F
我改了一下 還是出現同樣的錯誤 狀態:500 錯誤:Internal Server Error 訊息:{"Message":"傳入了無效的物件,必須有 \u0027:\u0027 或 \u0027}\u0027。 (16): {\"paramJSON\":\"\"{SEQ:\u002755921\u0027,DOC_SEQ:\u002768033\u0027,DEPT_NAME:\u0027 中鋁RF2北側廠外大排地質鑽探 \u0027,JOB_NO:\u0027UCA10043\u0027,WD_NO:\u0027\u0027,FILE_EXPIRATION:\u0027\u0027,DEPT:\u0027 中鋁RF2北側廠外大排地質鑽探 \u0027,TEL:\u0027\u0027,SUBJECT:\u0027\u0027,PERSON:\u0027\u0027,CONTENT:\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027,DATE:\u00272011/12/23\u0027}\"\"}","StackTrace":" 於 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n 於 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n 於 json += "TEL:\'" + SponsorTel + "\',"; json += "SUBJECT:\'" + Subject + "\',"; json += "PERSON:\'" + SponsorPerson + "\',"; json += "CONTENT:\'" + Content + "\',"; json += "DATE:\'" + SponsorDate + "\'"; json = "{" + json + "}"; _this.setMsg("開始存檔..."); _this.callWebService("Save", ["paramJSON", JSON.stringify(json)], function (paramData) { some code }; 已經將json改成字串了 不曉得那邊還有錯? ※ 編輯: s66449 來自: 122.146.229.136 (12/23 11:21)

12/23 12:48, , 3F
試看看 json = ("{"+json+"}");
12/23 12:48, 3F

12/23 12:59, , 4F
還是不行ˊˋ
12/23 12:59, 4F

12/23 13:11, , 5F
json 的 key 如果是字串要寫成字串啊...
12/23 13:11, 5F

12/23 13:12, , 6F
話說回來能用 stringify 就不要手工建立 json
12/23 13:12, 6F

12/23 13:13, , 7F
弄一個 javascript 物件扔進 stringify 比較穩
12/23 13:13, 7F

12/23 16:00, , 8F
去 json.org 找現成的 lib
12/23 16:00, 8F

12/23 16:53, , 9F
你是不是誤會JSON.stringify了XDD
12/23 16:53, 9F

12/23 17:08, , 10F
我誤會甚麼了嗎>.<
12/23 17:08, 10F

12/24 11:16, , 11F
應該是誤會了沒錯XD stringfy 吃一個 js 物件吐出 json
12/24 11:16, 11F
文章代碼(AID): #1Ey-2uoD (Web_Design)