我将在C#web.api中使用哪种数据对象进行批量数据导入?

时间:2015-06-23 02:47:29

标签: c# json asp.net-web-api

我有以下需要发送到我的api的数据集,我不确定要使用哪种数据类型:

{"UnitOfMeasureRelatedUnitData": [
  {
   "Name": "test",
   "Active": true,
   "UnitOfMeasureTypeID": "dd89f0a0-59c3-49a1-a2ae-7e763da32065",
   "BaseUnitID": "4da30098-3574-4a0c-a07f-c185ef34defe",
   "BaseUnitName": null,
   "BaseUnitAbbreviation": null,
   "RelatedUnitDisplayOrder": 1,
   "RelatedUnitName": "Foot",
   "RelatedUnitAbbreviation": "ft",
   "RelatedUnitConversionRatio": 12,
   "UnitOfMeasureSetID": "12a7c55a-6dcd-7261-c9e3-f1010bf836de"
  },
  {
    ...
  }
 ]
}

我的api方法:

[Route("api/admin/UnitsOfMeasure/UnitOfMeasureRelatedUnitsCreate")]
[HttpPost]
[ResponseType(typeof(UnitsOfMeasure.UnitsOfMeasureDataWithMessage))]
public IHttpActionResult UnitOfMeasureRelatedUnitsCreate(UnitsOfMeasure.UnitOfMeasureRelatedUnitDataInbound UnitOfMeasureRelatedUnitDataInbound)
{
    UnitsOfMeasure _oUnitsOfMeasure = new UnitsOfMeasure();
    return Ok(_oUnitsOfMeasure.UnitOfMeasureRelatedUnits_Create(UnitOfMeasureRelatedUnitDataInbound));
}

我的数据类:

public class UnitOfMeasureRelatedUnitDataInbound
{
    public string Name { get; set; }
    public Nullable<bool> Active { get; set; }
    public Nullable<Guid> UnitOfMeasureTypeID { get; set; }
    public Nullable<Guid> BaseUnitID { get; set; }
    public string BaseUnitName { get; set; }
    public string BaseUnitAbbreviation { get; set; }
    public Nullable<int> RelatedUnitDisplayOrder { get; set; }
    public string RelatedUnitName { get; set; }
    public string RelatedUnitAbbreviation { get; set; }
    public Nullable<double> RelatedUnitConversionRatio { get; set; }
    public Nullable<Guid> UnitOfMeasureSetID { get; set; }
}

到目前为止,我已经尝试了List<...>并没有列表,唯一传入的是null数据。

那么我需要使用哪种数据类型?

3 个答案:

答案 0 :(得分:0)

看起来你需要:

var UnitOfMeasureRelatedUnitData = new List<UnitOfMeasureRelatedUnitDataInbound>()

您可能还需要向我们展示Ok()的实现,以便我们可以看到您如何序列化数据。

以下是一些代码,向您展示我的意思https://dotnetfiddle.net/Ty4WrI

答案 1 :(得分:0)

您必须确保API Method和JSON数组中的参数名称相同。例如,如果您的方法签名是     public IHttpActionResult UnitOfMeasureRelatedUnitsCreate(UnitsOfMeasure.UnitOfMeasureRelatedUnitDataInbound _unitOfMeasureRelatedUnitDataInbound){...}

那么Json对象应该是,     {&#34; _unitOfMeasureRelatedUnitDataInbound&#34;:[     {     &#34;姓名&#34;:&#34;测试&#34;,     &#34;活跃&#34;:是的,     &#34; UnitOfMeasureTypeID&#34;:&#34; dd89f0a0-59c3-49a1-aaae-7e763da32065&#34;,     &#34; BaseUnitID&#34;:&#34; 4da30098-3574-4a0c-a07f-c185ef34defe&#34;,     &#34; BaseUnitName&#34;:null,     &#34; BaseUnitAbbreviation&#34;:null,     &#34; RelatedUnitDisplayOrder&#34;:1,     &#34; RelatedUnitName&#34;:&#34; Foot&#34;,     &#34; RelatedUnitAbbreviation&#34;:&#34; ft&#34;,     &#34; RelatedUnitConversionRatio&#34;:12,     &#34; UnitOfMeasureSetID&#34;:&#34; 12a7c55a-6dcd-7261-c9e3-f1010bf836de&#34;     },     {     ...     }     ]     }

答案 2 :(得分:0)

API调用:

<?php   
    $emailSubject = 'Customer Has a Question!';
    $webMaster = 'admin@princosoft.com';
    $name = $_POST['iname'];
    $email = $_POST['iemail'];
    $phone=$_POST['iphone'];
    $question = $_POST['imessage'];
    echo $name;
    $body = <<<EOD
    <br><hr><br>
    Name: $name <br>
    Email: $email <br>
    Questions: $question <br>
    EOD;
    $headers = "From: $email\r\n";
    $headers .= "Content-type: text/html\r\n";
    $success = mail($webMaster, $emailSubject, $body, $headers);
    $theResults = <<<EOD
    EOD;
    echo "$theResults";
?>
<div class="col-lg-12">
    <form name="sentMessage" action="/index.php" method="post" id="contactForm" novalidate >
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <input type="text" name="iname" class="form-control" 
                        placeholder="Your Name  *" 
                        id="name"  
                        required data-validation-required-message="Please enter your  name.">
                    <?php  $name = $_POST['iname']; ?>
                    <p class="help-block text-danger"></p>
                </div>
                <div class="form-group">
                    <input type="email" name="iemail" class="form-control" 
                        placeholder="Your Email *" id="email"  
                        required data-validation-required-message="Please enter your email address.">
                        <?php  $name = $_POST['iemail']; ?>
                    <p class="help-block text-danger"></p>
                </div>
                <div class="form-group">
                    <input type="tel" name="iphone" 
                        class="form-control" 
                        placeholder="Your Phone *" id="phone"  
                        required data-validation-required-message="Please enter your phone number.">
                        <?php  $name = $_POST['iphone']; ?>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <textarea class="form-control"name="imessage" placeholder="Your Message *" 
                        id="message"  
                        required data-validation-required-message="Please enter a
                        message.">/textarea>
                    <?php  $name = $_POST['imessage']; ?>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <div class="clearfix"></div>
                <div class="col-lg-12 text-center">
                    <div id="success"></div>
                    <button type="submit" name="isubmit" class="btn btn-xl">Send Message</button>
                </div>
            </div>
        </form>

这只返回第一条记录,但它可能是朝着正确方向迈出的一步。

修改

使用以下代码:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

[Route("api/admin/UnitsOfMeasure/UnitOfMeasureRelatedUnitsCreate")]
[HttpPost]
[ResponseType(typeof(UnitsOfMeasure.UnitsOfMeasureDataWithMessage))]
public IHttpActionResult UnitOfMeasureRelatedUnitsCreate([FromBody] JObject UnitOfMeasureRelatedUnitDataInbound)
{
    var json = "[" + JsonConvert.SerializeObject(UnitOfMeasureRelatedUnitDataInbound) + "]";
    List<UnitsOfMeasure.UnitOfMeasureRelatedUnitDataInbound> plist = JsonConvert.DeserializeObject<List<UnitsOfMeasure.UnitOfMeasureRelatedUnitDataInbound>>(json);
    return Ok();
}

现在我得到了所有元素。