[英]Creating a list of Values that are a couple levels deep in a Multi-Level JSON
[英]creating a breeze metadata for multi-level JSON
我不熟悉,也不十分確定如何為服務器返回的JSON數據創建javascript元數據。 由於服務器未提供我需要的元數據,因此我必須創建一個自定義元數據。 我們使用oData。 有人可以幫我基於此JSON數據創建JavaScript元數據嗎?
{ id: "5091bed7-e035-45c6-b2c5-d1301e4170e6", name: "Mike", address: { city: "San Jose", state: "CA" }, orders: [ { id: "1889e425-e8ad-4b79-b797-fe9aa6b0e433", date: "2015/04/12 00:00:00", items: [ { id: "a71aa2eb-9f8d-4234-aa83-6dfc5cd8abcc", description: "chocolate", price: "5.00" }, { id: "5091bed7-e035-45c6-b2c5-d1301e414444", description: "cookie", price: "1.00" } ] }, { id: "5ed077b0-72c4-43d0-fe96-6bebce6e3c86", date: "2015/05/22 00:00:00", items: [ { id: "bc5ed003-1302-4686-8294-4a0186e550a2", description: "pencil", price: "0.50" } ] } ] }
在Breeze中,每個對象都將作為實體 (如果有標識符)或復雜類型 (如果沒有標識符)進行處理。 在您的情況下,我為“客戶”(頂級對象),“訂單”和“ OrderItem”創建了實體。 我已經為“地址”創建了ComplexType。
請注意,每個傳入對象應具有“ $ type”屬性,以告知Breeze它是什么實體類型或復雜類型。 否則,您將需要自定義[JsonResultsAdapter]來告知Breeze類型。
我的元數據與您的對象不同,因為我假設外鍵可用於將Customer連接到Order到OrderItem,反之亦然。 這使實體更易於使用,但是如果服務器無法提供,則應從元數據中省略它們。
{
"structuralTypes": [
{
"shortName": "Address",
"namespace": "MyApp",
"isComplexType": true,
"dataProperties": [
{
"name": "city",
"dataType": "String",
"maxLength": 15
},
{
"name": "state",
"dataType": "String",
"maxLength": 15
}
]
},
{
"shortName": "Customer",
"namespace": "MyApp",
"autoGeneratedKeyType": "KeyGenerator",
"defaultResourceName": "Customers",
"dataProperties": [
{
"name": "id",
"dataType": "Guid",
"isNullable": false,
"isPartOfKey": true
},
{
"name": "name",
"dataType": "String",
"maxLength": 30
},
{
"name": "location",
"complexTypeName": "Address:#MyApp"
}
],
"navigationProperties": [
{
"name": "orders",
"entityTypeName": "Order:#MyApp",
"isScalar": false,
"associationName": "AN_Customer_Order"
}
]
},
{
"shortName": "Order",
"namespace": "MyApp",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Orders",
"dataProperties": [
{
"name": "id",
"dataType": "Guid",
"isNullable": false,
"isPartOfKey": true
},
{
"name": "customerID",
"dataType": "Guid"
},
{
"name": "date",
"dataType": "DateTime"
}
],
"navigationProperties": [
{
"name": "customer",
"entityTypeName": "Customer:#MyApp",
"isScalar": true,
"associationName": "AN_Customer_Order",
"foreignKeyNames": [
"customerID"
]
},
{
"name": "items",
"entityTypeName": "OrderItem:#MyApp",
"isScalar": false,
"associationName": "AN_Order_OrderItem"
}
]
},
{
"shortName": "OrderItem",
"namespace": "MyApp",
"autoGeneratedKeyType": "None",
"defaultResourceName": "OrderItems",
"dataProperties": [
{
"name": "id",
"dataType": "Guid",
"isNullable": false,
"isPartOfKey": true
},
{
"name": "orderID",
"dataType": "Guid",
"isNullable": false
},
{
"name": "description",
"dataType": "String",
"isNullable": false
},
{
"name": "price",
"dataType": "Decimal",
"isNullable": false
}
],
"navigationProperties": [
{
"name": "order",
"entityTypeName": "Order:#MyApp",
"isScalar": true,
"associationName": "AN_Order_OrderItem",
"foreignKeyNames": [
"orderID"
]
}
]
}
],
"resourceEntityTypeMap": {
"Customers": "Customer:#MyApp",
"Orders": "Order:#MyApp",
"OrderItems": "OrderItem:#MyApp"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.