C#如何使用文本框编辑特定的JSON行

时间:2017-05-10 14:33:03

标签: c# json wpf amazon-s3 key

我正在Visual Studio 2015 c#中构建一个WPF应用程序,并且需要能够从应用程序编辑配置文件

在应用程序中,我有一个带有一些文本框的TabItem,这些文本框由来自S3 Bucket的配置文件请求填充。

根据组合框中的选择更改事件填充文本框

这里的问题是能够编辑特定的行,每次我尝试用新数据覆盖整个配置而不是编辑当前数据。

这是我正在使用的JSON结构。

[
  {
    "ClientId": 23,
    "EmailVersionId": "u74hdta58jmf",
    "ClientName": "ClientName",
    "emailTemplateConfigs": [
      {
        "emailTypeName": "EmailName",
        "emailTypeId": 15,
        "subject": "subject",
        "fromAddress": "from address",
        "headerFooterReplacements": [
          {
            "placeholder": "##HEADER_PHONENUMBER##",
            "value": "0000 000 000"
          },
          {
            "placeholder": "##HTML_TITLE##",
            "value": "Title"
          },
          {
            "placeholder": "##EMAIL_HEADING##",
            "value": "Heading"
          }
        ]
      },
      {
        "emailTypeName": "EmailName",
        "emailTypeId": 29,
        "subject": "subject",
        "fromAddress": "from address",
        "headerFooterReplacements": [
          {
            "placeholder": "##HEADER_PHONENUMBER##",
            "value": "0000 000 000"
          },
          {
            "placeholder": "##HTML_TITLE##",
            "value": "Title"
          },
          {
            "placeholder": "##EMAIL_HEADING##",
            "value": "Heading"
          }
        ]
      }
    ]
  },
  {
    "ClientId": 33,
    "EmailVersionId": "jcna53sj231h",
    "ClientName": "ClientName",
    "emailTemplateConfigs": [
      {
        "emailTypeName": "EmailName",
        "emailTypeId": 12,
        "subject": "subject",
        "fromAddress": "from address",
        "headerFooterReplacements": [
          {
            "placeholder": "##HEADER_PHONENUMBER##",
            "value": "0000 000 000"
          },
          {
            "placeholder": "##HTML_TITLE##",
            "value": "Title"
          },
          {
            "placeholder": "##EMAIL_HEADING##",
            "value": "Heading"
          }
        ]
      },
      {
        "emailTypeName": "EmailName",
        "emailTypeId": 49,
        "subject": "subject",
        "fromAddress": "from address",
        "headerFooterReplacements": [
          {
            "placeholder": "##HEADER_PHONENUMBER##",
            "value": "0000 000 000"
          },
          {
            "placeholder": "##HTML_TITLE##",
            "value": "Title"
          },
          {
            "placeholder": "##EMAIL_HEADING##",
            "value": "Heading"
          }
        ]
      }
    ]
  }
]

我试图用文本框更新的部分是

    "emailTypeName": "EmailName",
    "emailTypeId": 15,
    "subject": "subject",
    "fromAddress": "from address",

但在进行编辑时,还需要使用客户端ID和电子邮件类型ID作为密钥将信息保存到正确的客户端和正确的模板。

            GetObjectRequest requestconfig = new GetObjectRequest();
            requestconfig.BucketName = "bucket";
            requestconfig.Key = "key";

            GetObjectResponse response = s3Client.GetObject(requestconfig);

            using (StreamReader r = new StreamReader(response.ResponseStream))
            {

                string json = r.ReadToEnd();
                dynamic jsonObj = JsonConvert.DeserializeObject(json);
                if ((int)emailTempConfig.emailTypeId == templateID)
                {

                    jsonObj["EmailTemplateConfig"][0]["EmailsTypeName"] = EmailNameText.Text;
                    output = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);

                }


            }


            PutObjectRequest requestConfig = new PutObjectRequest();
            requestConfig.BucketName = "bucket";
            requestConfig.Key = "key";
            requestConfig.ContentType = "application/json";
            requestConfig.ContentBody = output;

            s3Client.PutObject(requestConfig);

这就是我在使用代码的地方。

0 个答案:

没有答案