正在以javascript读取JavaScriptSerializer c#

本文关键字:JavaScriptSerializer 读取 javascript | 更新日期: 2023-09-27 18:21:35

在我的一个Web服务方法中,我在c#中序列化了调用JavaScriptSerializer.serialize的对象。现在,当它向我的javascript返回一个字符串时,我希望能够从对象中调用属性。我试过了,结果是.d.ID,但没用。这是它的回报。谢谢你的帮助。

 JavaScriptSerializer oSerializer = new JavaScriptSerializer();
        Inventory item = Inventories.GetInventoryByID(inventoryID);
        string jsonObject = oSerializer.Serialize(item);

例如,我想把身份证拿出来。我该怎么做?

{"d":"{'"ID'":'"589652cf-2ccd-49c1-b457-f2793a2a2424'",'"Brand'":{'"ID'":'"b728281b-cf3c-4ee0-ba3d-a3573b886b14'",'"Name'":'"Puma1'",'"ParentBrand'":null,'"BrandChildren'":{'"IsValueCreated'":false,'"Value'":[]}},'"DateAdded'":'"''/Date(1327695794000)''/'",'"AddedBy'":{'"ID'":'"d6e1f2e7-f8d1-4809-aadd-4cacd5c2bc43'",'"Email'":'"mojo@yahoo.com'",'"FirstName'":'"maurice'",'"MiddleInitial'":'"l'",'"LastName'":'"bachelor'",'"Address'":'"111 main st'",'"Phone'":'"2162330333'",'"IsAdmin'":true,'"DateJoined'":'"''/Date(-62135578800000)''/'",'"HasPurchased'":false,'"AgreeTerms'":true,'"LastPurchaseDate'":null,'"Password'":'"maurice'",'"CompanyName'":'"sneakers101'",'"AllowEmail'":false,'"PurchaseOrders'":{'"IsValueCreated'":false,'"Value'":[]}},'"LastUpdated'":'"''/Date(1327688594000)''/'",'"Instock'":true,'"NumberInStock'":12,'"MainPictureUrl'":'"'",'"AlternativePictureUrl'":'"'",'"ThumbNailUrl'":'"'",'"Price'":12.99,'"Like'":0,'"Discount'":1,'"ItemReleaseDate'":'"''/Date(568011600000)''/'",'"ItemCondition'":'"Great'",'"Size'":12,'"ItemNumber'":3,'"IsFavorite'":false,'"Details'":'"test Details'",'"Name'":'"Test'"}"}

正在以javascript读取JavaScriptSerializer c#

正如Inedial所说,您有一个奇怪的嵌套JSON值。如果数据的格式是您真正想要的,请使用JSON.parse重新解析值,如:

CCD_ 1。

以下是它的全部内容:asp.net的ajax d

var jsonObj = theObject; // Assuming it is parsed somehow
var embeddedJsonObj = $.parseJSON( jsonObj.d );
// embeddedJsonObj.ID is the ID you need.

演示

看起来您的根本问题是手动JSON序列化。

由于ASP.NET将自动对方法的结果进行JSON序列化,因此手动序列化的jsonObject字符串将进行第二次序列化。这就是为什么阿列克谢的答案有效。jQuery反序列化了它一次,留下一个包含JSON字符串的.d属性,然后JSON.parse()反序列化了该内部JSON字符串。

然而,这是双重低效的,因为您的数据被序列化两次,反序列化两次。相反,只需这样做:

[WebMethod]
public Inventory GetInventoryById(inventoryID) {
  return item = Inventories.GetInventoryByID(inventoryID);
}

然后,ASP.NET将返回如下所示的JSON:

{"d": {"ID": "589652cf-2ccd-49c1-b457-f2793a2a2424", /* the rest of your data here */ }}

哪个jQuery(假设您使用的是jQuery)将自动JSON.parse(),因为ASP.NET使用application/json内容类型进行响应,然后您将能够索引到类似的results.d.ID中。

相关文章:
  • 没有找到相关文章