Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите обработать json пожалуйста / 7 сообщений из 7, страница 1 из 1
08.09.2020, 12:05
    #39996494
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
declare @ResVal nvarchar(max)
set @ResVal=N'{ 
     "user" : {
        "firstName" : "John", 
        "lastName" : "Smith", 
        "phoneNumber" : "3838 28282 22", 
        "email" : "contact@oysterbar.la"
    }, 
    "outlet" : {
        "eid" : "*5514300", 
        "salesOrg" : "2040", 
        "name" : "Пятерочка РЦ"
    }, 
    "cart" : {
        "eid" : "b08a4fde-5350-4022-9b2a-e11a4414332d", 
        "total" : {
            "value" : "390000", 
            "differentItems" : 2, 
            "totalProducts" : 4
        }, 
        "items" : [
            {
                "salesOrg" : "2040", 
                "sku" : "=272440", 
                "name" : "=272440", 
                "quantity" : 2, 
                "type" : "BEER", 
                "price" : {
                    "base" : "1400", 
                    "total" : "2800"
                }, 
                "productPackage" : {
                    "unit" : "ea", 
                    "type" : "ea", 
                    "size" : "ea"
                }
            },
            {
                "salesOrg" : "2040", 
                "sku" : "=532430", 
                "name" : "=532430", 
                "quantity" : 1, 
                "type" : "BEER", 
                "price" : {
                    "base" : "110000", 
                    "total" : "110000"
                }, 
                "productPackage" : {
                    "unit" : "ea", 
                    "type" : "ea", 
                    "size" : "ea"
                }
            }
        ], 

    }, 
    "deliveryDate" : "2020-01-01T00:00:00.000+0000"  //COMMENT:  it is ISODate
    "distributor" : {
        "eid" : "CD-BLX-0006", 
        "salesOrg" : "2040", 
        "name" : "AS&D Paksan"
    }, 
    "shippingAddress" : {
        "eid" : "eid", 
        "address" : "PO Box 3556, Lanexang Avenue", 
        "city" : "Vientiane, Laos", 
        "zipCode" : "2032-2230"
    }, 
    "comments" : "free text field", 
    "orderNumber" : "067d555e-ede1-4d0c-96f2-7d1d10bdf4aa", 
    "salesOrg" : "2040", 
    "creationDate" : "2020-04-24T09:31:14.824+0000",  //COMMENT:  it is ISODate
    "orderStatus" : "Accepted"
}
'
select a.*
from openjson(@ResVal,'$.cart')  with (eid uniqueidentifier, total nvarchar(max), item nvarchar(max) as json) a



я в json-e новичок, не бейте сильно
пытаюсь получить хоть что-нибудь, запрос выдаёт JSON text is not properly formatted. Unexpected character '}' is found at position 1568. где эта фигурная скобка, и почему текст json неверно отформатирован, не понимаю, помогите пожалуйста. То ли действительно json кривой, то ли я что-то не понимаю
...
Рейтинг: 0 / 0
08.09.2020, 12:18
    #39996499
Guf
Guf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
Shurgenz,

Сервер врать не будет. Можно проверить, например, тут https://jsoneditoronline.org
...
Рейтинг: 0 / 0
08.09.2020, 12:53
    #39996516
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
Shurgenz,

что у вас за комментарии такие?

Код: sql
1.
"deliveryDate" : "2020-01-01T00:00:00.000+0000"  //COMMENT:  it is ISODate



в json такие конструкции не допустимы.

дополнительно: лишний разделитель элементов после окончания массива:

Код: sql
1.
2.
3.
4.
5.
6.
7.
  "productPackage" : {
                    "unit" : "ea", 
                    "type" : "ea", 
                    "size" : "ea"
                }
            }
        ],  --вот тут




не хватает запятой вот тут:
Код: sql
1.
"deliveryDate" : "2020-01-01T00:00:00.000+0000" 
...
Рейтинг: 0 / 0
08.09.2020, 13:12
    #39996532
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
спасибо большое!
...
Рейтинг: 0 / 0
11.09.2020, 09:52
    #39997535
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
declare @OrderDoc nvarchar(max)
set @OrderDoc=N'{      
	"user" : {        "firstName" : "John",         "lastName" : "Smith",         "phoneNumber" : "3838 28282 22",         "email" : "contact@oysterbar.la"    },     
	"outlet" : {        "eid" : "*5514300",        "salesOrg" : "2040",        "name" : "Пятерочка РЦ"    }, 
    "cart" : {        
			"eid" : "b08a4fde-5350-4022-9b2a-e11a4414332d",         
			"total" : {            "value" : "390000",             "differentItems" : 2,             "totalProducts" : 4        }, 
			"items" : [           
			{                 
				"salesOrg" : "2040",                 
				"sku" : "=272440",                 
				"name" : "=272440",                 
				"quantity" : 2,                 
				"type" : "BEER",                 
				"price" : {                    
					"base" : "1400",                     
					"total" : "2800"                
					},                 
				"productPackage" : 
				{                    
					"unit" : "ea",                     
					"type" : "ea",                     
					"size" : "ea"               
                 }            
			},      
            {                
				"salesOrg" : "2040",                 
				"sku" : "=532430",                 
				"name" : "=532430",                 
				"quantity" : 1,                 
				"type" : "BEER",                 
				"price" : 
				{                   
					"base" : "110000",                     
					"total" : "110000"                
				},                 
				"productPackage" : 
				{                   
				"unit" : "ea",                     
				"type" : "ea",                     
				"size" : "ea"                
				}
            }                  
			]    
	} , 
    "deliveryDate" : "2020-01-01T00:00:00.000+0000" ,  
    "distributor" : {
        "eid" : "CD-BLX-0006", 
        "salesOrg" : "2040", 
        "name" : "AS&D Paksan"
    }, 
    "shippingAddress" : {
        "eid" : "eid", 
        "address" : "PO Box 3556, Lanexang Avenue", 
        "city" : "Vientiane, Laos", 
        "zipCode" : "2032-2230"
    }, 
    "comments" : "free text field", 
    "orderNumber" : "067d555e-ede1-4d0c-96f2-7d1d10bdf4aa", 
    "salesOrg" : "2040", 
    "creationDate" : "2020-04-24T09:31:14.824+0000",   
    "orderStatus" : "Accepted"
}


'
select 1 CRMOrderNumber, 
	cast(left(a.creationDate,10) as date) CRMOrderDate, 
	json_value(c.price, '$.base') GrossPrice, 
	c.quantity Quantity, 
	json_value(c.productPackage, '$.unit') UnitId, 
	c.sku WareId,
	row_number() over(order by c.sku) + (select top 1 LineNumber from CRMOrderLine order by LineNumber desc) as LineNumber
from openjson(@OrderDoc,'$')  with (cart nvarchar(max) as json, orderNumber uniqueidentifier, creationDate varchar(50), deliveryDate varchar(50)) as a
cross apply openjson(@OrderDoc,'$.cart') with(items nvarchar(max) as json) b
cross apply openjson(b.items, '$') with (quantity int, price nvarchar(max) as json, productPackage nvarchar(max) as json, sku varchar(15)) c



господа, подскажите пожалуйста, а чего так туго с перформансом?

этот запрос, чтобы 2 записи вытащить 12 минут крутился
...
Рейтинг: 0 / 0
11.09.2020, 10:53
    #39997562
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
Shurgenz,

и сколько у вас там строк в таблице? :
Код: sql
1.
(select top 1 LineNumber from CRMOrderLine order by LineNumber desc) as LineNumber
...
Рейтинг: 0 / 0
11.09.2020, 11:03
    #39997567
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите обработать json пожалуйста
вот блин, извиняюсь, даа.... спасибо, там строк немало... на нем сидели
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите обработать json пожалуйста / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]