2017-06-29 10 views
1

JSONをあるスキーマから別のスキーマに変換する必要があります。JSONを別のJSONに変換する

JSONはC#アプリケーションに由来しており、そこから変更することはできません。

C#アプリケーションのJSONは、特にテーブルのnvarcharフィールドに格納されます。

{ 
    "office" : { 
     "name" : "Test Office", 
     "officeAddress" : [{ 
       "streetAddress" : "AddressLine 1", 
       "city" : "TestCity", 
       "stateProvince" : "NJ", 
       "postalCode" : "08543" 
      } 
     ],     
    } 
} 

は、我々が使用してキー名の変更により、これを翻訳することができますどのような方法があります:

{ 
    "officeSummary" : { 
     "name" : "Test Office", 
     "geographicData" : [{ 
       "addressLine1" : "AddressLine 1", 
       "city" : "TestCity", 
       "stateProvince" : "NJ", 
       "postalCode" : "08543" 
      } 
     ],     
    } 
} 

が、私はこれにそれを翻訳する必要があります。次のように

のC#からのソースがフォーマットされますSQL ServerのJSON機能ですか? Like JSON_VALUEまたはJSON_MODIFY

+0

JSONスキーマ/ファイルはどのように生成されますか?それはストアドプロシージャですか? –

+0

データベーステーブルにnvarcharとして格納されます。 –

+0

データベーステーブルにJSONを保存するのは何ですか?基本的に私はどこで修正するかを特定しようとしています。 –

答えて

1

これに基づいて、Example - Rename a keyに基づいて、3段階のプロセスを使用してキーの名前を変更できます。以下では、 'addressLine1'の名前を 'streetAddress'に変更するためのコードを提供しました。残りの値を置き換えるために同じメソッドを使用できますが、少し面倒です。注意して、名前が変更されたキーは最後まで移動されますが、もちろんこれはjson-parsingアプリケーションには影響しません。

DECLARE @json AS NVARCHAR(MAX); 
SET @json = '{ 
    "officeSummary" : { 
     "name" : "Test Office", 
     "geographicData" : [{ 
       "addressLine1" : "AddressLine 1", 
       "city" : "TestCity", 
       "stateProvince" : "NJ", 
       "postalCode" : "08543" 
      } 
     ]     
    } 
}' 

SELECT @json = 
JSON_MODIFY(
    JSON_MODIFY(@json, '$.officeSummary.geographicData[0].streetAddress' 
     , JSON_VALUE(@json, '$.officeSummary.geographicData[0].addressLine1') 
    ) 
, '$.officeSummary.geographicData[0].addressLine1', NULL) 

PRINT @json 

結果

{ 
    "officeSummary" : { 
     "name" : "Test Office", 
     "geographicData" : [{ 

       "city" : "TestCity", 
       "stateProvince" : "NJ", 
       "postalCode" : "08543" 
      ,"streetAddress":"AddressLine 1"} 
     ]     
    } 
} 
+0

[Example - JSONオブジェクトの変更](https://docs.microsoft.com/en-us/sql/t-sql/functions/json)を見てください。 -modify-transact-sql#examples)も使用して、二重エスケープを避けるために 'JSON_QUERY'を使用します。 –

0

私はあなたが(あなたが利用できるSSISを持っていると仮定)SSISスクリプト変換タスクと組み合わせるNewtonsoftからmodify json .NETライブラリの機能を使用できると思います。

次に、プロパティ値を変数に読み込むことができます。プロパティを削除し、保存された値で名前を変更したプロパティを作成します。

関連する問題